r - 创建一个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,")"))
解决方案
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"))
推荐阅读
- vue.js - 我如何弄清楚组合 API 的设置?
- sql - 在红移中进行不同汇总的更好方法?
- javascript - 检索firebase对象以绘制带有复选框的卡片,但每次复选框更改时都会绘制一张新卡片
- python - 如何从数据框列内的字典和原始数据框中提取值
- c++ - 有什么方法可以使用花括号作为函数参数而不在 C++ 中包含任何其他头文件?
- javascript - 使用 node.js 读取修改和写入日期
- android - 无法将活动范围内的对象注入 ViewModel
- reactjs - ReactJS:如何从 onClick 获取每张卡片的索引数组
- apache - 用于 profile.php 查询的 htaccess 重写器
- javascript - NextJS 构建偶尔会失败然后成功