Reputation: 3183
in this barplot the bars are not scaled in the same way. So the y axis is not ordered properly (157 > 1342.6). How do I fix this?
library(reshape)
library(ggplot2)
data <- matrix(1:9, 3, 3)
colnames(data) <- c("approach", "best", "worst")
data[1,] <- c("a", 1.8, 157.0)
data[2,] <- c("b", 592.3, 1342.6)
data[3,] <- c("c", 613.1, 3744.1)
data <- as.data.frame(data)
data <- melt(data, id="approach")
p <- ggplot(data, aes(x=approach, y=value, fill=variable)) +
geom_bar(position="dodge", stat="identity")
p
Thanks in advance.
Upvotes: 5
Views: 6306
Reputation: 507
Hint for users not reading the comments: The above solution is not working anymore.
library(reshape)
library(ggplot2)
data <- matrix(1:9, 3, 3)
colnames(data) <- c("approach", "best", "worst")
data[1,] <- c("a", 1.8, 157.0)
data[2,] <- c("b", 592.3, 1342.6)
data[3,] <- c("c", 613.1, 3744.1)
data <- as.data.frame(data)
data <- melt(data, id="approach")
data$value = as.numeric(data$value)# <-- Use this instead and adjust it to the preferred column values (doubles/factors etc)
p <- ggplot(data, aes(x=approach, y=value, fill=variable)) +
geom_bar(position="dodge", stat="identity")
p
Upvotes: 1
Reputation: 3249
You need to have numerical values in your value-column, currently you have factors:
library(reshape)
library(ggplot2)
data <- matrix(1:9, 3, 3)
colnames(data) <- c("approach", "best", "worst")
data[1,] <- c("a", 1.8, 157.0)
data[2,] <- c("b", 592.3, 1342.6)
data[3,] <- c("c", 613.1, 3744.1)
data <- as.data.frame(data)
data <- melt(data, id="approach")
data$value = as.double(levels(data$value))[data$value] # <-- converting
p <- ggplot(data, aes(x=approach, y=value, fill=variable)) +
geom_bar(position="dodge", stat="identity")
p
Upvotes: 4