首页 > 解决方案 > 更改ggplot中时间序列组的线型

问题描述

我有 4 个不同类型的时间序列。现在我想绘制所有这些并用虚线或实线区分类型'0'和类型'1'。我的代码:

data1<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="A", Type="0")
data2<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="B", Type="1")
data3<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="C", Type="0")
data4<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="D", Type="1")

data_combined<-rbind(data1,data2,data3,data4)
colnames(data_combined)[1:2]<-c("year","values")

ggplot(data=data_combined, aes(x=year, y=values, group=Stage))+
  geom_line(aes(linetype=Type, colour=Stage), size=1)

我不确定如何更改为相反的线型 - 我希望类型“0”为虚线,而“1”为实线。

样本图

标签: rggplot2

解决方案


我建议在您的代码中进行下一次修改。函数允许根据需要修改线型scale_linetype_manual()ggplot2

library(tidyverse)

#Data
data1<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="A", Type="0")
data2<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="B", Type="1")
data3<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="C", Type="0")
data4<-data.frame(year<-seq(1990,by=1, length.out=50),values<-rnorm(50,0,1),Stage="D", Type="1")

data_combined<-rbind(data1,data2,data3,data4)
colnames(data_combined)[1:2]<-c("year","values")

#Plot
ggplot(data=data_combined, aes(x=year, y=values, group=Stage,linetype=Type))+
  geom_line(aes(colour=Stage), size=1)+
  scale_linetype_manual(values = c('1'='solid','0'='dotted'))

输出:

在此处输入图像描述


推荐阅读