尽管有一些类似的问题和我的研究,我似乎无法解决我的小问题。请原谅,如果答案很简单,我很傻....我有一个数据框
df<-data.frame(X = c("Germany", "Chile","Netherlands","Papua New Guinea","Cameroon"), R_bar_Ger = c(1300000000, 620000, 550000, 400000, 320000))
我想制作一个有2个小节的条形图(x-achsis上的国家名称,y-achsis上的金额)。 左侧栏应显示德国,右侧应与其余4个国家叠加。
请提前帮助并非常感谢!
答案 0 :(得分:5)
解决此问题的一种方法是使用ggplot2
并稍微操纵数据框。
首先,在数据框中添加一列,指示应在哪个国家/地区绘制的国家/地区(德国或非德国):
df$bar <- ifelse(df$X == "Germany", 1, 0)
现在,创建情节:
ggplot(data = df, aes(x = factor(bar), fill = factor(X), y = R_bar_Ger)) +
geom_bar(stat = "identity") +
scale_y_sqrt() +
labs(x = "Country Group", title = "Square Root Scale", fill = "Country") +
scale_x_discrete(labels = c("Not Germany", "Germany"))
请注意,如果您不熟悉ggplot2
,则只需要前两行来创建绘图 - 其他行是为了让它看起来不错。由于德国比其他国家大几个数量级,如果不进行某种扩展,这种情况看起来不会很好。 ggplot2
有许多可能值得探索的内置缩放命令 - 在这里,我添加了平方根比例,以便非德国国家实际上可以根据需要进行堆叠。
可以找到ggplot2
条形图的文档here - 如果您正在寻找强大的绘图工具,那么它绝对值得一读。
答案 1 :(得分:2)
有许多方法可以给猫皮肤涂抹,当您学习新工具时,您的确切问题通常会发生变化。我可能不会以这种方式设置问题规范,但尽可能贴近你的数据和条形图,实现我想你想要的一种方法是:
with(aggregate(R_bar_Ger ~ X=="Germany", data=df, sum), barplot(R_bar_Ger, names.arg=c("Other", "Germany")))
所以我们在这里做的是通过添加汇总德国和非德国的数字,然后将这些值与合理的x轴标签一起传递给barplot函数。
答案 2 :(得分:2)