【发布时间】:2017-05-16 20:16:47
【问题描述】:
我想用 ggplot2 生成一个简单的条形图,条形按 y 值排序,颜色手动定义。这是我尝试过的:
df <- data.frame(c("a", "b", "c"), c(2, 3, 1))
colnames(df) <- c("shop", "revenue")
ggplot(data = df, aes(x = reorder(shop, revenue), y = revenue, fill = shop)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("blue", "yellow", "black")) +
theme_minimal()
问题是:颜色排序错误(黑色、蓝色和黄色,而不是scale_fill_manual 中所述的蓝色、黄色和黑色)。如何解决这个问题?
【问题讨论】:
-
您可以手动将颜色映射到 scale_fill_manual 中的特定值,如下所示: scale_fill_manual(values = c("c" = "blue", "a" = "yellow", "b" = "black "))。
-
试试
scale_fill_manual(values = setNames(c("blue", "yellow", "black"), df$shop[order(df$revenue)])) -
重新排序
fill以及x -
@Richard, Jeroen:你的建议都有效,谢谢!