[英]How to plot a stacked barplot in ggplot2, with different shades of the given color
我有一个如下的数据集Region。
Region Color 0-25 25-50 50-75 75-100
AF Green 51% 14% 24% 11%
AP Red 5% 12% 9% 74%
EU Yellow 18% 3% 36% 43%
Global Green 34% 11% 19% 36%
LA Green 44% 23% 22% 11%
NA Green 100% 0% 0% 0%
我想为上述数据集使用ggplot绘制堆积的条形图。 我正在寻找:例如,当绘制Global数据时,我希望颜色为0-25
之间的绿色, 25-50
为深绿色, 50-75
为浅灰色以及75-100
之间为深灰色。 其他为Simmilary,AP区域为红色,深红色,浅灰色和深灰色。
类似内容: 这篇文章
关于此的任何提示将有很大帮助。 谢谢..
这是一种使用绿色的方法。
dput(df)
structure(list(Region = structure(c(1L, 2L, 3L, 4L, 5L, NA), .Label = c("AF",
"AP", "EU", "Global", "LA", "Region"), class = "factor"), Color = structure(c(2L,
3L, 4L, 2L, 2L, 2L), .Label = c("Color", "Green", "Red", "Yellow"
), class = "factor"), `0-25` = c(51, 5, 18, 34, 44, 100), `26-50` = c(14,
12, 3, 11, 23, 0), `51-75` = c(24, 9, 36, 19, 22, 0), `76-100` = c(11,
74, 43, 36, 11, 0)), .Names = c("Region", "Color", "0-25", "26-50",
"51-75", "76-100"), row.names = 2:7, class = "data.frame")
然后, melt
充当tidyr
并cut
为色彩创造了因素。
df.m <- melt(df, id.vars = "Region", measure.vars = 3:6)
df.m$color.bin <- cut(x = df.m$value, breaks = c(0, 26, 51, 76, 100))
df.m$color.bin <- as.factor(df.m$color.bin)
编辑后的评论
然后,我添加了一个因子变量供ggplot使用。
df.m$shade <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "p","p","p","p","p","p","p","p")
最后一步是首先使用ggplot和堆栈进行运行,并手动设置要填充的颜色。 尽管有六个区域,但我仅对前四个匹配您的配色方案。 您可以完成其余的工作。 我添加了color
参数来显示堆叠段之间的划分。 我添加了guides
调用以消除字母和颜色的悠久传说:
ggplot(df.m, aes(x = Region, y = value, fill = shade)) +
geom_bar(stat = "identity", position = "stack", color = "black") +
scale_fill_manual(values = c("forestgreen", "lightcoral", "lemonchiffon", "blue", "grey30", "grey30",
"lightgreen", "lightcoral", "lemonchiffon", "lightblue", "grey30", "grey30",
"lightgreen","lightcoral", "yellow", "lightblue", "grey30", "grey30",
"lightgreen", "grey70","yellow", "blue", "grey30", "grey30")) +
guides(fill = FALSE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.