[英]Adding Summary Statistics to a graph using the annotation feature : 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 軸更改為“日志”?
我建議采用下一種方法,因為您只有幾個包。 您可以將摘要添加為文本注釋,但您應該圍繞每個組的文本位置進行調整。 如果您在aes()
為ggplot()
應用log()
轉換也是可能的。 我將向您展示兩種進行注釋的方法。
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)
如果要定義標簽的位置,則必須修改上一節中確定 x 位置的position
變量。 使用該圖的代碼是下一個:
#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
輸出:
注釋具有在summ
定義的 x 位置。 如果你想避免它,你只需使用下一個代碼:
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
包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.