【问题标题】:How to create a legend across two different types of geoms ggplot2如何跨两种不同类型的geom ggplot2创建图例
【发布时间】:2021-01-12 07:17:26
【问题描述】:

我有两个不同的数据集,我想在同一个 ggplot2 图中绘制它们,每个数据集使用不同的几何图形。理想情况下,我还想要一个图例,它表明点几何对应于一种数据,而线几何对应于另一种数据,但我不知道如何做到这一点。下面是我的数据基本样子的一个示例,减去了图例。

require(ggplot2)

set.seed(1)

d1 = data.frame(y_values = rnorm(21), x_values = 1:21, factor_values = as.factor(sample(1:3, 21, replace=T)))
d2 = data.frame(y_values = seq(-1,1,by = .05), x_values = seq(1,21,by = .5))



ggplot() + 
geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) + 
geom_line(data=d2, aes(x = x_values, y=y_values), color="blue")

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    也许这就是你想要的?每个数据有两个图例。您可以启用linetype 以创建新的图例,以便点和线可以位于不同的位置:

    #Code
    ggplot() + 
      geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) + 
      geom_line(data=d2, aes(x = x_values, y=y_values,linetype='myline'), color="blue")+
      scale_linetype_manual('My line',values='solid')
    

    输出:

    或者你也可以试试这个:

    #Code 2
    ggplot() + 
      geom_point(data=d1, aes(x=x_values, y=y_values, color=factor_values)) + 
      geom_line(data=d2, aes(x = x_values, y=y_values,linetype='myline'), color="blue")+
      scale_linetype_manual('',values='solid')+
      theme(
        legend.spacing = unit(-17,'pt'),
        legend.margin = margin(t=0,b=0,unit='pt'),
        legend.background = element_blank()
      )+guides(linetype=guide_legend(title="New Legend Title"),
             color=guide_legend(title=""))
    

    输出:

    【讨论】:

      猜你喜欢
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      相关资源
      最近更新 更多