geom_text()标签统计在绘图的每个方面相互打印

时间:2016-12-12 19:13:19

标签: r ggplot2 facet-wrap geom-text

我有一个分面的概率分布图(y = ..密度的直方图,binwidth = 1),如下所示。

library(ggplot2)
library(sqldf)
data(iris)

#Create Binned(Factor) Versions of Continuous Variables
iris$Sepal.Length = round(iris$Sepal.Length)
iris$Sepal.Width <- cut(iris$Sepal.Width, breaks = 4)

#Plot Probability Distributions of Sepal.Lengths, Separate Plots for Each Width-bin. 

p <-ggplot(iris, aes(x=Sepal.Length, y=..density..)) +
  geom_histogram(binwidth=1, alpha=0.5, position = 'identity', aes(fill=Species)) +
  facet_wrap(~Sepal.Width) 

p

enter image description here

我想为每个方面添加一个geom_text()或geom_label()来获取摘要统计信息(例如max(密度))。

基于答案here我尝试了这个代码,但得到了下面的图表,每个标签上的每个标签都印在彼此的顶部。

#Create DataFrame for Labels out of ggplot_build() data
ggbuild <- as.data.frame(ggplot_build(p)$data)
label.data = sqldf('select PANEL, max(density) as max_density from ggbuild group by PANEL ')

#Print Faceted Plot with Simple Summary Stat in Each Facet
p + geom_text(data=label.data, aes(x=.5, y=.8, label=paste0('Max Height: ', round(max_density,2))))

enter image description here

基于this answer“有时在ggplot调用之外获取摘要更容易”,我尝试了下面的代码:

p + geom_text(aes(x=0, y=.8, label=label.data$max_density)) 

但是这给我带来了以下错误:

  

错误:美学必须是长度1或与数据相同   (100):x,y,标签

与往常一样,非常感谢任何帮助。

0 个答案:

没有答案