我想用ggplot2生成一个简单的条形图,条形图由y值和手动定义的颜色排序。这是我试过的:
Place place= (Place) getIntent().getSerializableExtra("PLACE");
问题是:颜色排序错误(黑色,蓝色和黄色,而不是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()
中所述的蓝色,黄色和黑色)。如何解决这个问题?
答案 0 :(得分:1)
使用scale_fill_manual
,您可以为数据中的级别指定颜色。
同时,您在reorder(shop, revenue)
的定义中使用aes
,它按从左到右的顺序对数据进行排序。颜色的第三个也是最后一个定义&#34;蓝色&#34;被分配到 c ,现在位于左侧,因为它是最小的。
你可以花时间来规避这个:
ggplot(data = df, aes(x = reorder(shop, revenue), y = revenue, fill = shop)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("yellow", "black", "blue")) + # CHANGED
theme_minimal()
或者@JeroenBoeye建议:
ggplot(data = df, aes(x = reorder(shop, revenue), y = revenue, fill = shop)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = c("c" = "blue", "a" = "yellow", "b" = "black")) + # Jeroen Boeye's suggestion
theme_minimal()
请告诉我这是否可以解决您的问题。