【发布时间】:2011-05-13 18:00:09
【问题描述】:
library(ggplot2)
orderX <- c("A" = 1, "B" = 2, "C" = 3)
y <- rnorm(20)
x <- as.character(1:20)
group <- c(rep("A", 5), rep("B", 7), rep("C", 5), rep("A", 3))
df <- data.frame(x, y, group)
df$lvls <- as.numeric(orderX[df$group])
ggplot(data = df, aes(x=reorder(df$x, df$lvls), y=y)) +
geom_point(aes(colour = group)) +
geom_line(stat = "hline", yintercept = "mean", aes(colour = group))
我想创建一个这样的图表:
当我不需要重新排序 X 的值时,这确实有效,但是,当我使用重新排序时,它不再有效。
【问题讨论】:
-
我认为您在这里使用重新排序是错误的,因为它只会重新排序 X,而不是组或 Y。这将用错误的 y 绘制错误的 x!
-
除非 X 只表示索引,否则不要在图中使用它(使用 jitter 代替?)
-
那我对 reorder 的使用是错误的。在我的真实数据中,x 上的值是每个单独测量的标签,我确实希望看到。这些标签在组中的顺序无关紧要。
-
也许它在我的情况下不起作用的另一个原因是,因为我的 x 值不是数字,而是字符。
-
+1 简洁的问题,带有示例数据和图片。如果可以的话,我会给每个人 +1。