控制 ggplot 图例中的线型、颜色和标签

Lau*_*ler 5 r ggplot2

我在之前还指定了自定义线型和颜色的图上设置自定义图例标签时遇到问题。stackoverflow 上有一个类似的问题,用于处理linetypes 和 line colours 的自定义图例。但是,一旦您希望在上述两个属性之上指定图例标签,ggplot2 似乎开始崩溃。

这是我的最小可重复示例:

library(ggplot2)

df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
           treatment = c(rep("one", 2), rep("two", "2")))

ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
  geom_line() +
  scale_linetype_manual(values = c(1, 3),
                        labels = c("Treatment one", "Treatment two")) +
  scale_color_manual(values = c("black", "red"))
Run Code Online (Sandbox Code Playgroud)

上面的代码产生下图

在 scale_linetype_manual 或 scale_color_manual 中设置标签会导致创建两个图例。

scale_linetype_manual()或 中设置标签会scale_color_manual()导致创建两个单独的图例。具有正确虚线的线条将始终是无色的。另一方面,具有正确颜色的线型将无法正确表示线型(仅实线)。

有没有办法在 ggplot2 中同时控制颜色、线型和图例标签?或者这是包的限制,我应该在 getgo 的数据框中正确指定标签?

www*_*www 9

使标签上是相同的scale_linetype_manual()scale_color_manual()

library(ggplot2)

df <- data.frame(x = rep(1:2, 2), y = c(1, 3, 2, 2),
                 treatment = c(rep("one", 2), rep("two", "2")))

ggplot(df, aes(x = x, y = y, colour = treatment, linetype = treatment)) +
  geom_line() +
  scale_linetype_manual(values = c(1, 3),
                        labels = c("Treatment one", "Treatment two")) +
  scale_color_manual(values = c("black", "red"),
                     labels = c("Treatment one", "Treatment two"))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明