使用注释功能将摘要统计信息添加到图形:ggplot2

问题描述

我有兴趣为虹膜数据绘制类似的图,并在该图上生成摘要统计信息: https://imgur.com/a/GasBB8r

我在此关注此帖子:How to add summary statistics in histogram plot using ggplot2?

df <- iris
df.m <- melt(df,id="Species")

#Calculating the summary statistics
summ <- df.m %>% 
  group_by(variable) %>% 
  summarize(min = min(value),max = max(value),mean = mean(value),q1= quantile(value,probs = 0.25),median = median(value),q3= quantile(value,probs = 0.75),sd = sd(value))

然后我修改了代码以制作密度图,而不是直方图:

p1 <- ggplot(df.m) + geom_density(aes(x = value),fill = "grey",color = "black") + 
    facet_wrap(~variable,scales="free",ncol = 2)+ theme_bw()

我在这里似乎有问题:

p1+geom_density(data=summ,label =split(summ,summ$variable),npcx = 0.00,npcy = 1,hjust = 0,vjust = 1,size=2)

有人知道问题出在哪里吗?另外,是否可以仅使用ggplot2完成此操作?我正在使用没有管理员权限来下载许多库的计算机(我拥有reshape2,dplyr,ggplot2)。是否应该使用ggplot2中的annotate()函数完成此操作?有没有一种方法可以将每个图形的x轴更改为“对数”?

解决方法

我建议使用下一种方法,因为您只有很少的软件包。您可以将摘要添加为文本批注,但是您应该在每个组的文本位置周围进行调整。如果您在log()的{​​{1}}中申请,则aes()转换也是可能的。我将向您展示两种注释方法。

ggplot()

在这里,我们创建注释:

library(ggplot2)
library(dplyr)

#Data
df <- iris
df.m <- melt(df,id="Species")

如果要定义标签的位置,则必须修改确定x位置的上一节中的#Calculating the summary statistics and create the label summ <- df.m %>% group_by(variable) %>% summarize(min = min(value),max = max(value),mean = mean(value),q1= quantile(value,probs = 0.25),median = median(value),q3= quantile(value,probs = 0.75),sd = sd(value)) %>% mutate(lab = paste("min = ",round(min,2),"\nmax = ",round(max,"\nmean = ",round(mean,"\nq1 = ",round(q1,"\nmedian = ",round(median,"\nq3 = ",round(q3,"\nsd = ",round(sd,2)),position=c(1.5,0.8,0.25,-2)) %>% select(variable,lab,position) 变量。接下来使用该代码进行绘图:

position

输出:

enter image description here

注释具有#Plot p1 <- ggplot(df.m) + geom_density(aes(x = log(value)),fill = "grey",color = "black") + facet_wrap(~variable,scales="free",ncol = 2)+ theme_bw() p1 <- p1 + geom_text(data = summ,aes(x=position,label = lab),y=Inf,hjust=1,vjust=1.2,size=3) p1 中定义的x位置。如果要避免这种情况,只需使用下一个代码:

summ

输出:

enter image description here

您可以选择任何这些选项。您应用的功能无法正常工作的原因可能是由于p1 <- ggplot(df.m) + geom_density(aes(x = log(value)),aes(label = lab),x=Inf,size=3) p1 grid软件包造成的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...