r - 使用注释功能将汇总统计信息添加到图形中:ggplot2
问题描述
我有兴趣为虹膜数据制作类似的图,并在图上生成汇总统计数据: https ://imgur.com/a/GasBB8r
我在这里关注这篇文章:如何使用 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”?
解决方案
我会建议下一种方法,因为你只有几个包。您可以将摘要添加为文本注释,但您应该围绕每个组的文本位置进行调整。log()
如果您在aes()
for中申请,也可以进行转换ggplot()
。我将向您展示两种进行注释的方法。
library(ggplot2)
library(dplyr)
#Data
df <- iris
df.m <- melt(df, id="Species")
在这里,我们创建注释:
#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_if(is.numeric, round, digits=2) %>%
mutate(lab = paste("min = ", min, "\nmax = ", max, "\nmean = ", mean,
"\nq1 = ", q1, "\nmedian = ", median, "\nq3 = ", q3, "\nsd = ", sd),
position=c(1.5, 0.8, 0.25, -2)) %>% select(variable, lab, position)
如果要定义标签的位置,则必须修改position
上一节中确定 x 位置的变量。接下来是使用该图的代码:
#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
. 如果你想避免它,你只需使用下一个代码:
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(label = lab), x = Inf, y = Inf, hjust = 1, vjust = 1.2, size = 3)
p1
输出:
您可以选择这些选项中的任何一个。您应用的功能不起作用的原因可能是由于grid
和gridExtra
包。
推荐阅读
- python - 批量预测 Vertext AI
- asp.net-mvc - JQuery ajax 调用块 RedirectToAction
- git - fedora 上安装的 git 包在哪里?
- java - for循环中的Java removeIf条件
- spring-boot - mybatis gloal param 无效
- javascript - 如何在页面加载时加载“对象”标签的内容?
- php - 根据另一个输入进行 livewire 验证
- javascript - Extjs 应用程序在动态添加一个有缺陷的项目时崩溃
- angular - 将来自 valuechanges 和 statuschanges 反应形式的 observables 与 rxjs 以角度结合
- tensorflow - 如何使用 tflite_model_maker 在 Tensorboard 上显示检测结果