ggplot2|从0开始绘制折线图
时间:2022-07-22
本文章向大家介绍ggplot2|从0开始绘制折线图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
话说“一图胜千言”,在各类数据分析报告中经常会看见各种各样的图形,例如折线图、条形图、箱线图、点图等。
其中折线图可以反映某种现象的趋势,本文利用R语言的ggplot2包,从头带您绘制各式各样的线形图。
一 绘制单条折线图
载入数据及函数包
library(ggplot2)
df <- data.frame(dose=c("A", "B", "C"), len=c(5.16, 10.10, 30))
head(df)
dose len
1 A 5.16
2 B 10.10
3 C 30.00
1.1 绘制基本的折线图
ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line()
1.2 添加点,并更改线型 和颜色
ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line(linetype = "dashed",color="red")+ geom_point()
1.3 添加箭头
library(grid)
ggplot(data=df, aes(x=dose, y=len, group=1))+geom_line(arrow = arrow())+geom_point()
#自定义箭头类型
myarrow=arrow(angle = 15, ends = "both", type = "closed")
ggplot(data=df, aes(x=dose, y=len, group=1)) +geom_line(arrow=myarrow)+geom_point()
1.4 附赠
ggplot(data=df, aes(x=dose, y=len, group=1)) + geom_step()+ geom_point()
注:因为横坐标的属性为因子(离散型的字符转换为因子),所以需要添加‘group = 1’的设置。
二 绘制多条折线图
设置数据
df2 <- data.frame(supp=rep(c("Case", "Control"), each=3), dose=rep(c("A", "B", "C"),2),len=c(6.8, 15, 38, 5.16, 10.10, 30))
head(df2)
supp dose len
1 Case A 6.80
2 Case B 15.00
3 Case C 38.00
4 Control A 5.16
5 Control B 10.10
6 Control C 30.00
2.1 绘制多条折线图,更改线型
ggplot(data=df2, aes(x=dose, y=len, group=supp))+
geom_line(linetype="dashed", color="blue", size=1.2)+
geom_point(color="red", size=3)
2.2 分组更改线型和点的形状
ggplot(df2, aes(x=dose, y=len, group=supp)) +
geom_line(aes(linetype=supp))+
geom_point(aes(shape=supp))
2.3 自定义更改线型
ggplot(df2, aes(x=dose, y=len, group=supp)) +
geom_line(aes(linetype=supp))+
geom_point()+
scale_linetype_manual(values=c("twodash", "dotted"))
2.4 更改颜色
p <- ggplot(df2, aes(x=dose, y=len, group=supp)) +
geom_line(aes(color=supp))+
geom_point(aes(color=supp))
p
其他自定义颜色方式:
# Use custom color palettes
p+scale_color_manual(values=c("#E69F00", "#56B4E9"))
# Use brewer color palettes
p+scale_color_brewer(palette="Dark2")
# Use grey scale
p +scale_color_grey() + theme_classic()
2.5 添加误差棒
利用ToothGrowth数据集,首先分组计算每一分组的均值和标准差,整理成如下格式:
supp dose len sd
1 OJ 0.5 13.23 4.459709
2 OJ 1.0 22.70 3.910953
3 OJ 2.0 26.06 2.655058
4 VC 0.5 7.98 2.746634
5 VC 1.0 16.77 2.515309
6 VC 2.0 26.14 4.797731
绘制添加误差棒的折线图
ggplot(df3, aes(x=dose, y=len, group=supp, color=supp)) +
geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1) +
geom_line() +geom_point()+
scale_color_brewer(palette="Paired")+theme_minimal()
注:可以使用position_dodge 参数,防止errorbars重叠
三 折线图汇总展示
ggplot(df3, aes(x=dose, y=len, group = supp, color=supp))+
geom_errorbar(aes(ymin=len-sd, ymax=len+sd), width=.1,
position=position_dodge(0.05)) +
geom_line(aes(linetype=supp)) +
geom_point(aes(shape=supp))+
labs(title="Plot of lengthby dose",x="Dose (mg)", y = "Length")+
theme_classic()+
scale_color_manual(values=c('#999999','#E69F00'))
四 参考资料
ggplot2:数据分析与图形艺术
http://www.sthda.com/english/wiki/ggplot2-essentials
好了,就是这么简单,输出基本图形后,根据自己的喜好进行细节的调整即可。
- JS游戏开发,让你的静态人物动起来(来自网路)
- Golang语言websocket源码
- 社团划分——Fast Unfolding算法
- 【PSU】AIX 11g RAC自动打GI PSU5
- 详解自动识别验证码,LSTM大显身手
- 智能算法——PageRank
- 【Go 语言社区】Golang 可变参数的使用
- 【Go 语言社区】Golang源码解读之map
- 一则报警信息所折射出来的诸多问题(r9笔记第14天)
- Java面试系列17-编程题-读取服务器字符、实现序列化、计数器、1000阶乘、n出列问题等
- tensorflow(一)windows 10 64位安装tensorflow1.4与基本概念解读tf.global_variables_initializer
- 容灾切换中的数据库宕机问题简单分析(一) (r9笔记第12天)
- Java面试系列14
- linux下搭建django记录笔记,未完稿,节后继续
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Kotlin 实现按钮点击跳转监听事件方式
- Android使用剪切板传递数据
- kotlin anko页面跳转实现方式,携带参数或flag
- 关于android连续点击出现多个Activity界面的解决方法
- Android Studio使用recyclerview实现展开和折叠功能(在之前的微信页面基础之上)
- 解决django 多个APP时 static文件的问题
- Android Studio如何获取SQLite数据并显示到ListView上
- Android自定义短信倒计时view流程分析
- 使用Android studio3.6的java api方式调用opencv
- thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
- php+iframe 实现上传文件功能示例
- php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
- 如何在OpenStack Kolla上部署Tungsten Fabric(附14个常见的配置问题)
- 浮点数的秘密
- 由多线程内存溢出产生的实战分析