首页 > 解决方案 > 为ggplot中的行添加标签

问题描述

所以我对 R 或 ggplot 的学习不是很深入,但我在一个正在做一些编码的班级。对于我的一个项目,我试图通过在一些线条上贴标签来超越一点,但我不知道该怎么做。

这是我的代码:

downpp_median <- median(songs$download_pp)
#Create quartile variables
downpp_qone <- quantile(songs$download_pp, 1/4)
downpp_qthree <- quantile(songs$download_pp, 3/4)
  
#Create Violin Plot
ggplot(songs, aes(x = condition, y = download_pp, fill = condition)) + 
  geom_violin(alpha = .3) + 
#Add log scale on the y-axis
  scale_y_log10() +
#Add median line
  geom_hline(yintercept = downpp_median, color = "orange") +
#Add quartile lines
  geom_hline(yintercept = downpp_qone, color = "purple") +
  geom_hline(yintercept = downpp_qthree, color = "purple") +
#Add labels
  labs(title = "Average # of Downloads Per User 
       Against Condition",
       x = "Condition",
       y = "Downloads",
       fill = "Conditions")

我正在尝试在中位数和四分位数线上添加标签,但我不知道该怎么做。如果有人有任何提示,将不胜感激!

标签: rggplot2

解决方案


annotate您可以使用geom添加这些。您可以向它提供标签在调用中的位置的 x 和 y。下面的例子:

#fake data to test
songs <- data.frame(download_pp = rnorm(100,100,20),
                    condition = rep(LETTERS[1:5], each = 20))

downpp_median <- median(songs$download_pp)
#Create quartile variables
downpp_qone <- quantile(songs$download_pp, 1/4)
downpp_qthree <- quantile(songs$download_pp, 3/4)

#Create Violin Plot
ggplot(songs, aes(x = condition, y = download_pp, fill = condition)) + 
  geom_violin(alpha = .3) + 
  #Add log scale on the y-axis
  scale_y_log10() +
  #Add median line
  geom_hline(yintercept = downpp_median, color = "orange") +
  #Add quartile lines
  geom_hline(yintercept = downpp_qone, color = "purple") +
  geom_hline(yintercept = downpp_qthree, color = "purple") +
  annotate(geom = "text", x = "E", y = downpp_median, label = "Median") +
  annotate(geom = "label", x = 3, y = downpp_qone, label = "1st Quartile") +
  #Add labels
  labs(title = "Average # of Downloads Per User 
       Against Condition",
       x = "Condition",
       y = "Downloads",
       fill = "Conditions")

这有点复杂,因为您使用的condition是填充,这意味着 x 轴对应于不同的类别。因此,您可以使用要放置的类别的名称(我在代码中放置 E 的位置)或数字(记住每个类别沿 x 轴增加 1)。您还可以指定不同的几何图形。geom="text"将仅添加文本,而geom="label"将在框中添加文本。

这是上面的代码创建的内容:

在此处输入图像描述


推荐阅读