ggplot barplot 中 y 轴的顺序错误

dbr*_*der 5 r ggplot2

在此条形图中,条形图的缩放方式不同。因此 y 轴的排序不正确 (157 > 1342.6)。我该如何解决?

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
Run Code Online (Sandbox Code Playgroud)

阴谋

提前致谢。

mar*_*tin 4

您的值列中需要有数值,目前您有以下因素:

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
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @dbrettschneider R中的矩阵将数据存储为一种[类型](http://stackoverflow.com/a/5159049/2461552)。为了避免事后需要将字符转换为数字,您可以将数据直接放入“data.frame”中,而不是从“matrix”开始。示例: `dat2 = data.frame(approach = c("a", "b", "c"), best = c(1.8, 592.3, 613.1), 最差 = c(157.0, 1342.6, 3744.1))` (2认同)