r - 更改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”为实线。
解决方案
我建议在您的代码中进行下一次修改。函数允许根据需要修改线型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'))
输出:
推荐阅读
- r - 如何在 R 中自动计算最大公有理除数
- android - 点击 SearchView 如何影响 RecyclerView?
- hibernate - Hibernate envers 获取已删除的行数据
- sql - 语法错误 - 第 0 行,第 122 列:错误:预期的字符串结尾,得到 'ON'
- php - Php Carbon:每周一和周二,每两周一次
- javascript - 如何使用递归转置 m*n 矩阵?
- git - 在 bitbucket/git 中,“xx commits behind proto. Sync Now”有什么作用?
- excel - 简单模式匹配宏中的 Excel-VBA 编译/语法错误
- javascript - 如何修复“位置 0 的 JSON 中的意外令牌 <”?
- android - 安迪模拟器上的查尔斯代理问题(失败:SSLHandshake:不支持的curveId:29)