首页 > 解决方案 > 创建一个ggplot,其中点/线的颜色取决于另一列中的值?多种颜色类别

问题描述

我有一组数据,如下所示。我想要做的是绘制日期与值,然后点/线的颜色取决于 X 值。

我希望能够创建不同颜色的类别。因此,例如下面的数据,我绘制了日期与时间的关系,然后我希望颜色取决于 X 值,即任何低于 3 的值显示蓝色,高于 3 和低于 6 的任何值显示为红色,高于 6 的任何值显示为绿色.

我知道如何创建一个图表,该图表根据我使用下面的代码设置的限制更改颜色一次,但想根据 X 值创建颜色类别并决定它们是什么颜色。

    date       values       X
2021-08-09       1          0.5
2021-08-09       8          0.7
2021-08-09       6          2
2021-08-09       14         3
2021-08-09       18         5
2021-08-09       10         6
2021-08-09       1          4
2021-08-09       3          9
2021-08-09       6          0.3
2021-08-09       8          0.9
2021-08-09       11         4


    ggplot(df) + geom_line(aes(x = date, y = values, colour = X > 5)) 

代码现在看起来像这样?为什么即使有 X = 10 的值,图表上也没有显示 10+ 的类别

    All_Hourly_1 %>%
  mutate(group = case_when(
    max_AQHI < 2 ~ 1,
    max_AQHI < 3 ~ 2,
    max_AQHI < 4 ~ 3,
    max_AQHI < 5 ~ 4,
    max_AQHI < 6 ~ 5,
    max_AQHI < 7 ~ 6,
    max_AQHI < 8 ~ 7,
    max_AQHI < 9 ~ 8,
    max_AQHI < 10 ~ 9,
    TRUE ~ 10)) %>%
      ggplot(aes(x = date, y = PM_RAMP, color = as.factor(group), group = 1)) +
  geom_line() + scale_color_manual(values = c("deepskyblue1", "dodgerblue", "dodgerblue4", "yellow", "gold", "goldenrod", "lightcoral","red", "red3", "red4"), labels = c("1 (Low Risk)","2 (Low Risk)","3 (Low Risk)","4 (Moderate Risk)","5 (Moderate Risk)","6 (Moderate Risk)","7 (High Risk)","8 (High Risk)","9 (High Risk)","10+ (Very High Risk)")) + labs(colour = "Air Quality Health Index Value") + geom_line(size = 1) + labs (x = "Date", y = expression(PM[2.5]," (µg ", m^-3,")"))

但图表如下所示: 在此处输入图像描述

标签: rggplot2plot

解决方案


case_when先尝试ggplot,然后使用scale_color_manual设置颜色,最好date使用 . 更改为日期格式as.Date

df %>%
  mutate(group = case_when(
    X < 3 ~ 1,
    X < 6 ~ 2,
    TRUE ~ 3
  ), date = as.Date(date)
  ) %>%
  ggplot(aes(x = date, y = values, color = as.factor(group))) +
  geom_line() + scale_color_manual(values = c("blue", "red", "green")) 

推荐阅读