Man*_*t M 2 visualization r ggplot2
我正在使用R中的内置economics(来自ggplot2包)数据集,并使用以下代码为同一图中的每个变量绘制了时间序列:
library(reshape2)
library(ggplot2)
me <- melt(economics, id = c("date"))
ggplot(data = me) +
geom_line(aes(x = date, y = value)) +
facet_wrap(~variable, ncol = 1, scales = 'free_y')
Run Code Online (Sandbox Code Playgroud)
现在,我进一步想要改进我的图表,对于每个系列,我想显示最小值和最大值的红点.所以我想如果我能找到每个时间序列的最小值和最大值的坐标,我就能找到一种在每个时间序列的开头和结尾绘制红点的方法.为此我使用了以下代码:
which(pce == min(economics$pce), arr.ind = TRUE)
which(pca == max(pca), arr.ind = TRUE)
Run Code Online (Sandbox Code Playgroud)
这并没有真正引导我到任何地方.谢谢:)
当您想要保存过滤的子集时,这可能很好
library(reshape2)
library(ggplot2)
library(dplyr)
me <- melt(economics, id=c("date"))
me %>%
group_by(variable) %>%
summarise(min = min(value),
max = max(value)) -> me.2
left_join(me, me.2) %>%
mutate(color = value == min | value == max) %>%
filter(color == TRUE) -> me.3
ggplot(data=me, aes(x = date, y = value)) +
geom_line() +
geom_point(data=me.3, aes(x = date, y = value), color = "red") +
facet_wrap(~variable, ncol=1, scales='free_y')
Run Code Online (Sandbox Code Playgroud)
谢谢@Gregor
me.2 <- me %>%
group_by(variable) %>%
mutate(color = (min(value) == value | max(value) == value))
ggplot(data=me.2, aes(x = date, y = value)) +
geom_line() +
geom_point(aes(color = color)) +
facet_wrap(~variable, ncol=1, scales="free_y") +
scale_color_manual(values = c(NA, "red"))
Run Code Online (Sandbox Code Playgroud)
