ggplot具有可变的线型和颜色

时间:2018-02-05 08:33:33

标签: r ggplot2

在R with ggplot中,我想创建一个由第三个变量分组的意大利面条图(2个定量变量)来指定线条颜色。其次,我想将该分组变量与行类型或宽度聚合在一起。

以下是使用空气质量数据集的示例。我希望线条的颜色代表月份,而夏季月份的线宽与非夏季不同。

首先,我为聚合组创建了一个指标变量:

airquality$Summer <- with(airquality, ifelse(Month >= 6 & Month < 9, 1, 0))

我想要这样的东西,但有不同的线宽: enter image description here

然而,这失败了:

library(ggplot2)
ggplot(data = airquality, aes(x=Wind, y = Temp, color = as.factor(Month), group = Summer)) +
  geom_point() + 
  geom_line(linetype = as.factor(Summer))

这也失败了(指定airquality$Summer):

ggplot(data = airquality, aes(x=Wind, y = Temp, 
    color = as.factor(Month), group = airquality$Summer)) +
  geom_point() + 
  geom_line(linetype = as.factor(airquality$Summer))

我尝试了this solution,但又收到了另一个错误:

lty <- setNames(c(0, 1), levels(airquality$Summer))

ggplot(data = airquality, aes(x=Wind, y = Temp, 
    color = as.factor(Month), group = airquality$Summer)) +
  geom_point() + 
  geom_line(linetype = as.factor(airquality$Summer)) + 
  scale_linetype_manual(values = lty)

有什么想法吗?

修改

我的实际数据显示非常明显的趋势,我想区分下面的所有其他顶线。我的目标是说服人们他们应该赚取的不仅仅是学生贷款的最低金额: enter image description here

1 个答案:

答案 0 :(得分:1)

您只需将论坛更改为Month并将linetype放入aes

ggplot(data = airquality, aes(x=Wind, y = Temp, color = as.factor(Month), group = Month)) +
  geom_point() + 
  geom_line(aes(linetype = factor(Summer)))

如果要指定linetype,可以使用几种方法。这是一种方式:

lineT <- c("solid", "dotdash")
names(lineT) <- c("1","0")

ggplot(data = airquality, aes(x=Wind, y = Temp, color = as.factor(Month))) +
  geom_point() + 
  geom_line(aes(linetype = factor(Summer))) +
  scale_linetype_manual(values = lineT)