首页 > 解决方案 > 使用不同的几何图形时,ggplot2 chage 图例键从交叉到线

问题描述

我有这个代码

library(tidyverse)
df=mammals
ggplot(df, aes(log(body))) +
  stat_bin(aes(y = ..density..)) +
  stat_function(fun = "dnorm",
                aes(color = "a",
                    linetype = "a")) +
  geom_vline(aes(
    xintercept = -4,
    color = "b",
    linetype = "b"
  )) +
  geom_vline(aes(
    xintercept = -3,
    color = "c",
    linetype = "b"
  )) +
  guides(linetype = FALSE)

这产生了这个情节:

在此处输入图像描述

但是,我不希望有十字架。我想有线条。在最好的情况下,它们将是坚实的和虚线的。我尝试了这个,但只取得了部分成功(我也不确定为什么我必须overwrite.aes输入"b"两次......):

library(tidyverse)
df = mammals
ggplot(df, aes(log(body))) +
  stat_bin(aes(y = ..density..)) +
  stat_function(fun = "dnorm",
                aes(color = "a",
                    linetype = "a")) +
  geom_vline(aes(
    xintercept = -4,
    color = "b",
    linetype = "b"
  )) +
  geom_vline(aes(
    xintercept = -3,
    color = "c",
    linetype = "b"
  )) +
  guides(linetype = FALSE, color = guide_legend(override.aes = list(
    linetype = c("a" = "dashed", "b" = "solid", "b" = "solid")
  )))

但是我不知道如何将图例符号更改为一条线。

在此处输入图像描述

标签: rggplot2tidyverse

解决方案


推荐阅读