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

时间:2017-09-25 01:03:47

标签: r ggplot2

我在以前指定自定义线型和颜色的图上设置自定义图例标签时遇到问题。 stackoverflow上有一个类似的问题,涉及linetypes and line colors的自定义图例。但是,一旦你希望在上述两个属性之上指定图例标签,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"))

上面的代码会产生以下图表

Setting labels in either scale_linetype_manual or scale_color_manual results in two legends being created.

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

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

1 个答案:

答案 0 :(得分:2)

使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"))

enter image description here