在R中突出显示面状ggplot2图形中的最小点和最大点
我在R中使用内置的在R中突出显示面状ggplot2图形中的最小点和最大点,r,ggplot2,visualization,R,Ggplot2,Visualization,我在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 = 'f
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')
这并没有真正把我带到任何地方。
谢谢:)方法1:使用联接
当您想要保存过滤的子集时,这会很好
library(重塑2)
图书馆(GG2)
图书馆(dplyr)
我%
分组依据(变量)%>%
总结(最小值=最小值),
max=max(值))->me.2
左(我,我.2)%>%
变异(颜色=值==最小值|值==最大值)%>%
过滤器(颜色==TRUE)->me.3
ggplot(数据=me,aes(x=日期,y=值))+
geom_线()+
几何点(数据=me.3,aes(x=日期,y=值),颜色=“红色”)+
刻面(变量,ncol=1,scales='free'y')
方法2:无连接简化
谢谢@Gregor
me.2%
分组依据(变量)%>%
变异(颜色=(最小(值)=值|最大(值)=值))
ggplot(数据=me.2,aes(x=日期,y=值))+
geom_线()+
几何点(aes(颜色=颜色))+
镶嵌面包裹(~变量,ncol=1,scales=“free\u y”)+
比例颜色手册(数值=c(NA,“红色”))
方法1:使用联接
当您想要保存过滤的子集时,这会很好
library(重塑2)
图书馆(GG2)
图书馆(dplyr)
我%
分组依据(变量)%>%
总结(最小值=最小值),
max=max(值))->me.2
左(我,我.2)%>%
变异(颜色=值==最小值|值==最大值)%>%
过滤器(颜色==TRUE)->me.3
ggplot(数据=me,aes(x=日期,y=值))+
geom_线()+
几何点(数据=me.3,aes(x=日期,y=值),颜色=“红色”)+
刻面(变量,ncol=1,scales='free'y')
方法2:无连接简化
谢谢@Gregor
me.2%
分组依据(变量)%>%
变异(颜色=(最小(值)=值|最大(值)=值))
ggplot(数据=me.2,aes(x=日期,y=值))+
geom_线()+
几何点(aes(颜色=颜色))+
镶嵌面包裹(~变量,ncol=1,scales=“free\u y”)+
比例颜色手册(数值=c(NA,“红色”))
可能不是代码不起作用的原因,但您可以使用
which.max
和which.min
来获取最大值和最小值的索引。此外,在最小代码中,它可能应该是economics$pce==min(economics$pce)
。可能是这样。@Molx我试图找到每个变量的最小值和最大值,并在图形上生成它。因此,一旦我知道了变量的最小值(y轴),我如何找到最小值(x轴)的日期值可能不是代码不起作用的原因,但您可以使用which.max
和which.min
来获得最大值和最小值的索引。此外,在您的最小代码中,它可能应该是economics$pce==min(economics$pce)
。可能是这样。@Molx我试图找到每个变量的最小值和最大值,并在图形上生成它。因此,一旦我知道了变量的最小值(y轴),我如何才能找到最小值(x轴)的日期值呢?一些简化:me%mutate(color=(min(value)==value | max(value)==value))
无需连接。然后对于绘图,你不需要给它额外的数据,只需为你不喜欢的点设置颜色,像这样:geom\u point(aes(color=color))+scale\u color\u手册(values=c(NA,“red”)
@Jason我想的更多的是转换、总结和子集。你能帮我一下吗?简单一点:me%mutate(color=(min(value)==value | max(value)==value))
无需加入。然后,对于绘图,你不需要给它额外的数据,只需为你不喜欢的点设置颜色,就像这样:geom\u point(aes(color=color))+scale\u color\u手册(values=c(NA,“red”)
@Jason我想的更多的是转换、总结和子集。你能帮我一下吗。
which(pce == min(economics$pce), arr.ind = TRUE)
which(pca == max(pca), arr.ind = TRUE)
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')
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"))