【问题标题】:以特定方式合并 2 个图例
【发布时间】:2022-01-18 13:25:06
【问题描述】:

我的数据图包括箱线图和点图(来自 mtcars 的数据用于说明)

ggplot(mtcars,aes(x=factor(cyl), y=mpg), fill=factor(carb),shape=factor(vs))+
     geom_boxplot(data=subset(mtcars,am==1),aes(x = factor(cyl), y = mpg,fill=factor(carb),shape=factor(vs)),outlier.shape = NA, alpha = 0.85, width = .65, colour = "BLACK") +
      geom_point(data=subset(mtcars,am==1 & vs==1),aes(x = factor(cyl), y = mpg,fill=factor(carb),shape=factor(vs)),outlier.shape = NA,size=5,alpha=.4,shape=1, colour = "BLACK", position = position_dodge(width = 0.65)) 

我的目标是那里

  1. 成为单个图例而不是两个图例
  2. 现在显示与填充相关的所有颜色(基于碳水化合物)和一个解释空心圆圈对应的元素(即 vs==1)。
  3. 该单个元素(对应于 geom_point)显示一个空心圆(对应于图表中的空心圆),而不是当前显示的箱线图。

任何帮助将不胜感激

【问题讨论】:

  • 添加scale_shape_manual(name = "vs", values = 1) 使点图例变为圆形。至于合并两个图例,我不相信如果不破解 ggplot 对象,这是可能的,carb 有 5 个级别,vs 只有 2 个。

标签: r ggplot2 legend


【解决方案1】:

从 geom_boxplot 中删除形状美学。此外,通常不需要指定 color = "black",因为这是 geom_boxplot 的默认值(geom_point 也是如此)。

我在线运行的版本引发了关于outlier.shape 的警告,因此我已将其删除。

将形状添加为常量美学指向并使用scale_shape_manual 定义您的形状(如果您想要填充,请使用 shape = 21 - 您的代码建议这样做,或者如果您不这样做,请使用 shape = 1。)。当您删除图例标题时,图例看起来相当“合并”。

但是,不确定您对“合并图例”的确切含义。介意显示所需的输出吗?

library(ggplot2)

ggplot(mtcars,aes(x=factor(cyl), y=mpg), fill=factor(carb),shape=factor(vs))+
  geom_boxplot(data=subset(mtcars,am==1), aes(x = factor(cyl), y = mpg, fill=factor(carb)), alpha = 0.85, width = .65) +
  geom_point(data=subset(mtcars,am==1 & vs==1),aes(x = factor(cyl), y = mpg,fill=factor(carb), shape = "v = 1"), size=5, alpha=.4, position = position_dodge(width = 0.65)) +
  scale_shape_manual(NULL, values = 21)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
相关资源
最近更新 更多