簡體   English   中英

使用注釋功能將匯總統計信息添加到圖形中:ggplot2

[英]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

輸出:

在此處輸入圖片說明

您可以選擇這些選項中的任何一個。 您應用的功能不起作用的原因可能是由於gridgridExtra包。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM