r语言ggplot画两条曲线_R语言画折线图?

r语言ggplot画两条曲线_R语言画折线图?_第1张图片

笔者邀请您,先思考:

1 折线图有什么作用?如何画折线图

折线图(Line chart)是将数据表示为一系列称为“标记”的数据点,数据点之间由线段连接而成。它是类似散点图,除了测量点是有序的且用直线段连接。它是许多领域中常见的基本图表类型。

一 基本折线图

折线图

 1# 加载R包
2library(ggplot2)
3
4# 构造数据集
5df <- data.frame(dose=c("D0.5", "D1", "D2"), 6                 len=c(4.2, 10, 29.5)) 7 8# 1 基本折线图 9ggplot(data=df, aes(x=dose, y=len, group=1)) +10  geom_line()+11  geom_point()1213# 2 改变线的类型14ggplot(data=df, aes(x=dose, y=len, group=1)) +15  geom_line(linetype = "dashed")+16  geom_point()1718# 3 改变线的颜色19ggplot(data=df, aes(x=dose, y=len, group=1)) +20  geom_line(color="red")+21  geom_point()22

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第2张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第3张图片

3的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第4张图片

二 折线图上添加箭头

 1# 1 添加箭头
2library(grid)
3ggplot(data=df, aes(x=dose, y=len, group=1)) +
4  geom_line(arrow = arrow())+
5  geom_point()
6
7# 2 折线图两端添加箭头
8myarrow <- arrow(angle = 15, ends = "both", type = "closed") 9ggplot(data=df, aes(x=dose, y=len, group=1)) +10  geom_line(arrow=myarrow)+11  geom_point()12

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第5张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第6张图片

三 分组折线图

 1df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3), 2                  dose=rep(c("D0.5", "D1", "D2"),2), 3                  len=c(6.8, 15, 33, 4.2, 10, 29.5)) 4#1 多组折线图 5ggplot(data=df2, aes(x=dose, y=len, group=supp)) + 6  geom_line()+ 7  geom_point() 8#2 改变直线类型 9ggplot(data=df2, aes(x=dose, y=len, group=supp)) +10  geom_line(linetype="dashed", color="blue", size=1.2)+11  geom_point(color="red", size=3)12


1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第7张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第8张图片

四 利用分组改变折线的类型

1#1 通过分组改变线的类型
2ggplot(df2, aes(x=dose, y=len, group=supp)) +
3  geom_line(aes(linetype=supp))+
4  geom_point()
5
6#2 通过分组改变线的类型和点的形状
7ggplot(df2, aes(x=dose, y=len, group=supp)) +
8  geom_line(aes(linetype=supp))+
9  geom_point(aes(shape=supp))

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第9张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第10张图片

五 使用函数scale_linetype_manual()手动更改线的类型

1# 手动设置线的类型
2ggplot(df2, aes(x=dose, y=len, group=supp)) +
3  geom_line(aes(linetype=supp))+
4  geom_point()+
5  scale_linetype_manual(values=c("twodash", "dotted"))

图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第11张图片

六 分组改变线的颜色

1# 改变线的颜色
2
3p <- ggplot(df2, aes(x=dose, y=len, group=supp)) +4  geom_line(aes(color=supp))+5  geom_point(aes(color=supp))6p7

图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第12张图片

七 利用函数手动改变线的颜色

1# 1 自定义调色板
2p+scale_color_manual(values=c("#999999", "#E69F00", "#56B4E9"))
3# 2 使用现成的调色板
4p+scale_color_brewer(palette="Dark2")
5# 3 使用灰度
6p + scale_color_grey() + theme_classic()

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第13张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第14张图片

3的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第15张图片

八 改变折线图的图例默认位置

1p "Paired")+
2  theme_minimal()
3# 1 图例在上方
4p + theme(legend.position="top")
5# 2 图例在下方
6p + theme(legend.position="bottom")
7# 3 移除图例
8p + theme(legend.position="none")

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第16张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第17张图片

3的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第18张图片

九 x轴是连续值的折线图

 1df2 "VC", "OJ"), each=3),
2                  dose=rep(c("0.5", "1", "2"),2),
3                  len=c(6.8, 15, 33, 4.2, 10, 29.5))
4
5# x轴作为连续变量
6df2$dose as.numeric(as.vector(df2$dose))
7ggplot(data=df2, aes(x=dose, y=len, group=supp, color=supp)) +
8  geom_line() + 
9  geom_point()+
10  scale_color_brewer(palette="Paired")+
11  theme_minimal()

图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第19张图片

十 x轴是日期的折线图

1head(economics)
2ggplot(data=economics, aes(x=date, y=pop))+
3  geom_line()

图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第20张图片

十一 带有误差条的折线图

 1data_summary function(data, varname, groupnames){
2  require(plyr)
3  summary_func function(x, col){
4    c(mean = mean(x[[col]], na.rm=TRUE),
5      sd = sd(x[[col]], na.rm=TRUE))
6  }
7  data_sum 8                  varname)
9  data_sum rename(data_sum, c("mean" = varname))
10  return(data_sum)
11}
12
13df3 "len", 
14                    groupnames=c("supp", "dose"))
15
16# 1 均值的标准差
17ggplot(df3, aes(x=dose, y=len, group=supp, color=supp)) + 
18  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1) +
19  geom_line() + 
20  geom_point()+
21  scale_color_brewer(palette="Paired")+
22  theme_minimal()
23
24
25# 2 使用position_dodge水平移动重叠的误差条
26ggplot(df3, aes(x=dose, y=len, group=supp, color=supp)) + 
27  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1, 
28                position=position_dodge(0.05)) +
29  geom_line() + 
30  geom_point()+
31  scale_color_brewer(palette="Paired")+
32  theme_minimal()

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第21张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第22张图片

十二 自定义折线图

 1# 1 简单的折线图
2# 通过分组改变点的形状和线的类型
3ggplot(df3, aes(x=dose, y=len, group = supp, shape=supp, linetype=supp))+ 
4  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1, 
5                position=position_dodge(0.05)) +
6  geom_line() +
7  geom_point()+
8  labs(,x="Dose (mg)", y = "Length")+
9  theme_classic()
10
11# 2 分组改变颜色和添加误差条
12p <- ggplot(df3, aes(x=dose, y=len, group = supp, color=supp))+ 13  geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1, 14                position=position_dodge(0.05)) +15  geom_line(aes(linetype=supp)) + 16  geom_point(aes(shape=supp))+17  labs(title="Plot of lengthby dose",x="Dose (mg)", y = "Length")+18  theme_classic()19p + theme_classic() + scale_color_manual(values=c('#999999','#E69F00'))20

1的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第23张图片

2的图形结果:

r语言ggplot画两条曲线_R语言画折线图?_第24张图片

参考资料:

ggplot2折线图

r语言ggplot画两条曲线_R语言画折线图?_第25张图片

内容推荐

  • 如何阅读论文?

  • 论文管理工具,我用Zotero

  • 一个数据人的2018

  • R机器学习介绍第一部分

  • R机器学习介绍第二部分

  • R中你应该学习的7种可视化

  • R中用线性回归进行预测建模

  • 使用RMarkdown沟通结果

  • 使用LIME探索模型

  • RStudio1.2新功能介绍

  • 使用spotifyr聚类Springsteen专辑

  • 使用R和tidytext对Trustpilot 的评论进行主题建模

  • R语言做深度学习

数据人网:数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。

你可能感兴趣的:(r语言ggplot画两条曲线,r语言折线图,vc++画线段的函数)