修改ggplot R中点和线的颜色
Amending colours of points and lines in ggplot R
示例代码:
library(ggplot)
par(mfrow=c(1,1))
dates15=seq(as.POSIXct("2015-01-01 00:00:00"), as.POSIXct("2015-12-31 23:45:00"), by="15 min", tz="GMT")
ex1=rnorm(35040, 150, 2)
point=rep("Control", 35040)
red=c(1000:2000, 4000:5000, 10000:10500)
point[red]="Not Controlled"
gr.cols=c("black", "red")
DF=data.frame(Date=dates15,Data=ex1, Type=point)
ggplot(DF, aes(Date, Data,colour=Type))+geom_point()+geom_line()+scale_color_manual(values=gr.cols)
如何根据我的矢量 red
创建带有彩色点的线图,而没有从最后一个红点到下一个红点的红线?在我的示例代码中,有一条从 2000 点到 4000 点的红线,但我不希望这样。我只想要连续点之间的一条线,只有当下一个点也是红色时才显示为红色。
我可以调换 geom_line
和 geom_point
的顺序,但线仍然存在,它只是隐藏在黑点下面,并没有解决问题。
您的问题是 ggplot 会自动将所有 'similar' 观察结果(颜色相同)分组为一组。修复非常简单:创建一个分组变量。我们可以使用包 data.table 中的 rleid
-函数来执行此操作。
library(data.table)
DF$group_ID <- rleid(DF$Type)
然后我们在对ggplot的调用中添加一个分组变量:
ggplot(DF, aes(Date, Data,colour=Type, group=group_ID))+
geom_point()+
geom_line()+
scale_color_manual(values=gr.cols)
或者,如果我们想要所有点之间的连续线,我们可以简单地在 aes
.
中使用 group=1
这会强制在所有点之间建立连接而不分组。每段都具有前一点的颜色。
示例代码:
library(ggplot)
par(mfrow=c(1,1))
dates15=seq(as.POSIXct("2015-01-01 00:00:00"), as.POSIXct("2015-12-31 23:45:00"), by="15 min", tz="GMT")
ex1=rnorm(35040, 150, 2)
point=rep("Control", 35040)
red=c(1000:2000, 4000:5000, 10000:10500)
point[red]="Not Controlled"
gr.cols=c("black", "red")
DF=data.frame(Date=dates15,Data=ex1, Type=point)
ggplot(DF, aes(Date, Data,colour=Type))+geom_point()+geom_line()+scale_color_manual(values=gr.cols)
如何根据我的矢量 red
创建带有彩色点的线图,而没有从最后一个红点到下一个红点的红线?在我的示例代码中,有一条从 2000 点到 4000 点的红线,但我不希望这样。我只想要连续点之间的一条线,只有当下一个点也是红色时才显示为红色。
我可以调换 geom_line
和 geom_point
的顺序,但线仍然存在,它只是隐藏在黑点下面,并没有解决问题。
您的问题是 ggplot 会自动将所有 'similar' 观察结果(颜色相同)分组为一组。修复非常简单:创建一个分组变量。我们可以使用包 data.table 中的 rleid
-函数来执行此操作。
library(data.table)
DF$group_ID <- rleid(DF$Type)
然后我们在对ggplot的调用中添加一个分组变量:
ggplot(DF, aes(Date, Data,colour=Type, group=group_ID))+
geom_point()+
geom_line()+
scale_color_manual(values=gr.cols)
或者,如果我们想要所有点之间的连续线,我们可以简单地在 aes
.
group=1
这会强制在所有点之间建立连接而不分组。每段都具有前一点的颜色。