使用如下数据框
> set.seed(99)
> data = data.frame(name=c("toyota", "nissan"), a=sample(1:10,2)/10,b=sample(-150:-50,2),c=sample(1e2:1e3,2),d=sample(1e3:1e5,2), e=sample(-15:30,2))
> data
name a b c d e
1 toyota 0.6 -81 582 67471 -7
2 nissan 0.2 -51 969 30163 13
我需要为每个列a到e创建一个条形图。我可以单独做ggplot(data, aes(x=name, y=a)) + geom_bar(stat = "identity")
,这很好。但是我需要将所有这些图表放到一个图表中,可能会以迭代的方式使用两列 - 如何解决这个问题?
更新1 : -
为了增加问题的清晰度,创建单个堆积条形图没有意义,因为每列的值范围变化很大。答案here中的简单堆积条形图将生成如下图 - 这对于表示某些变量并不有用
更新2 : -
建议使用facet_grid(~ variable, scales = "free")
并不能让这更好 - 请参阅下面的图表。
答案 0 :(得分:1)
或许facet_wrap()
更适合您的需求?
library(ggplot2)
library(reshape2)
ggplot(melt(data, id = "name")) +
aes(name, value, fill = variable) +
geom_col(position = "dodge") +
facet_wrap(~ variable, scales = "free_y")
答案 1 :(得分:0)
你需要首先融化你的数据并绘制它,使用创建的列变量作为分组列:
data = data.frame(name=c("toyota", "nissan"), a=sample(1:10,2)/10,b=sample(-150:-50,2),c=sample(1e2:1e3,2),d=sample(1e3:1e5,2), e=sample(-15:30,2))
library(reshape2)
data <- melt(data, id="name")
library(ggplot2)
ggplot(data,aes(x=name, y=value, fill=variable)) + geom_bar(stat = "identity", position = "dodge")