如何绘制直方图,其中y为ggplot2中每个bin的x值之和

时间:2014-08-21 13:34:37

标签: r ggplot2

我有一个光伏数据框,其中包含有关太阳能电厂的信息。一个变量是kw中的发电功率:

id   power
1    20.1
2    110.1
3    3.0
4    231.9
...  

我正在尝试绘制一个功率为X值且直径为50 kW的直方图。作为Y,我想展示垃圾箱范围内每株植物的累积功率。 我试过这段代码没有成功。

ggplot(pv, aes(x = power, y = sum(power)), stat = "bin") + 
    geom_histogram(stat = "identity", binwidth=50)

我需要使用cut函数计算总和,或者可以直接用ggplot2生成这个图?

1 个答案:

答案 0 :(得分:9)

这应该做你想要的:

set.seed(1)
df <- data.frame(id=1:100, power=rlnorm(100, log(100)))
ggplot(df) + 
  geom_histogram(aes(x=power, weight=power), binwidth=50) +
  ylab("Total Power (kW)")

weight美学强制统计计算将每个计数乘以相应的权重,在这种情况下相当于对功效值求和。

enter image description here

这是一个更好的可视化:

ggplot(transform(df, power.bin=cut(power, 0:24 * 50, include.lowest=TRUE))) + 
  geom_bar(aes(x=power.bin, y=power), color="white", position="stack", stat="identity") +
  ylab("Total Power (kW)") + 
  scale_x_discrete(drop=F) +
  theme(axis.text.x=element_text(angle=90, vjust=.5, hjust=1))

enter image description here