更改ggplot2图例中中位数和平均值的颜色

问题描述

请忽略整个图表中的随机点 - 这只是一个快速重现的示例来说明我的意思:

ggplot(data = iris,aes(x = Sepal.Length,y = Sepal.Width,fill = Species)) + 
  geom_violin(alpha = 0.5) +
  stat_summary(aes(shape="mean",group=1),fun = "mean",size = 2,geom = "point",color = "black") +
  stat_summary(aes(shape = "median",group = 2),fun = "median",color = "red") +
  labs(x = "Sepal Length",y = "Sepal Width",shape = "Shape",colour = "Species") +
  theme_classic() 

Iris Graph

我该怎么做:

a)。更改图例,使每个分类变量的框中间没有红点? b)。更改“形状”图例的颜色,使“均值”为黑色,“中值”为红色?

我在 Google 上搜索一个多小时,但找不到答案,因此非常感谢您的帮助。谢谢!

解决方法

图例指南有一个 override.aes 参数,您可以使用它来明确设置键的美感。

library(ggplot2)

ggplot(data = iris,aes(x = Sepal.Length,y = Sepal.Width,fill = Species)) + 
  geom_violin(alpha = 0.5) +
  stat_summary(aes(shape="mean",group=1),fun = "mean",size = 2,geom = "point",color = "black") +
  stat_summary(aes(shape = "median",group = 2),fun = "median",color = "red") +
  labs(x = "Sepal Length",y = "Sepal Width",shape = "Shape",colour = "Species") +
  guides(
    shape = guide_legend(override.aes = list(colour = c("black","red"))),fill = guide_legend(override.aes = list(shape = NA))
  ) +
  theme_classic() 
#> Warning: position_dodge requires non-overlapping x intervals

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...