当前位置:网站首页>(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图
(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图
2022-07-06 09:17:00 【EricFrenzy】
注:本博客旨在分享个人学习心得,有不规范之处请多多包涵!
Histogram 矩形图
在统计学中,矩形图经常被用作展示某连续变量(如长度、重量等测量数值)的分布。在R语言中构造矩形图用hist()
函数,具体请见下例:
#hist()函数第一个参数为数据,这里用的是sampleData列表中列标题为length的数据
#main是图的标题;xlab是x轴标题;ylab是y轴标题
#freq是TRUE时画的是频率,是FALSE时画的是概率密度
#breaks决定矩形的数量。这里的20设置图上会有20个矩形
#xlim和ylim决定画图的范围
hist(sampleData$length, main = "Histogram of Protein Lengths",
xlab = "Length (AA)", ylab = "Frequency", freq = TRUE,breaks = 20,
xlim = c(0,10000), ylim = c(0,7000))
下图为画出的效果:
在这张图中,我们可以发现大部分的protein length都在2000以下,是一个很明显的正偏态分布。
Bar plot 柱状图
柱状图在统计学中经常被用作展示非连续变量(如人数、钱数等计数测量)的分布。在R语言中构造柱状图用barplot()
函数,具体请见下例:
#barplot()的第一个参数也是用到的数据。这里是education列表里列标题为spending的数据
#names.arg相当于每条数据对应的x值。这个vector对应每一年的spending
#ylab是y轴标题;main是图的标题;ylim是y轴的范围
#width调整每个柱的宽度;space调整柱之间的距离
barplot(education$spending,
names.arg = education$year,
ylab = "Spending per student($)",
main = "Education Spending per Student",
ylim=c(0,7000))
下图为画出的效果:
可见样本数据中,平均每学生在教育的逐年递增。
Pie chart 饼图
饼图能很直观地展示数据中不同种类的占比。R语言中自带的pie()
函数功能并不是很强大。在R语言中构造饼图请见下例:
#pie()的第一个参数为数据,可以是各种类占总数的百分比,也可以是各种类的数量
#labels是标在每个扇形外的数据,格式为vector
#main是图的标题
#col调整每个扇形的颜色。rainbow()是R内置的函数,能把彩虹色分成指定数量
#clockwise调整画图是顺时针还是逆时针;init.angle调整扇形从什么位置开始画
percentage <- c(36, 8, 17, 52)
desserts <- c("Ice cream", "Cookie", "Brownie", "Cake")
pie(percentage, labels = desserts,
main = "Dessert Preference",
col = rainbow(length(percentage)),
clockwise = FALSE, init.angle = 0)
下图为画出的效果:
Dot plot 散点图
散点图经常被用在科学实验中,在把自变量和因变量可视化的基础上进行进一步分析。在R语言中构造散点图用plot()
函数,具体请见下例:
a <- c(12, 17, 25, 33, 39, 45) #自变量(x)
b <- c(10, 13, 17, 20, 26, 31) #因变量(y)
#plot()的第一个参数为自变量(x值)数据,第二个参数为因变量(y值)数据
#main设置图的标题;xlab和ylab设置横纵坐标的标题
plot(a, b, main="My Plot", xlab="x variable", ylab="y variable")
#lm(Y~X)会生成一个线性回归的数据,包括回归函数的截距和斜率
#abline()会奖这条回归线画到图上;col设置线的颜色
#summary()会生成关于回归线的细节
abline(lm(b~a), col="red")
summary(lm(b~a))
下图为画出的效果:
下图为summary()在Console输出的结果:
图中的Estimate下为回归线的截距(2.09396)和斜率(0.61074)。Multiple R-squared就是我们常用的R方值(0.975)。
Box-and-whisker plot 箱形图
箱形图能很好地展示数据的分布情况。R语言中构造箱形图用boxplot()
函数,具体请见下例:
#数据选用斐波那契数列的前几项
#boxplot()的第一个参数为数据;horizontal控制图是否水平画
#也可以用main设置图的标题和xlab设置横轴标题
data <- c(1, 1, 2, 3, 5, 8, 13, 21, 34)
boxplot(data, horizontal=TRUE)
下图为画出的效果:
从左到右看图里竖直的线,我们可以看出数据的下边缘、下四分位数、中位数、上四分位数、上边缘,和圆圈代表的异常值。可以看出这组数据正偏态分布、有异常值等特点。
Strip chart 带状图
带状图类似于一维的散点图,功能接近于箱形图,能在较小的数据量下直观展示数据的分布。R语言中构造带状图用stripchart()
函数,具体请见下例:
#stripchart()函数的第一个参数为数据
#method控制数据点的重合。"jitter"为避免互相重合,"stack"为将数值相同的点并列显示,默认的"overplot"生成的所有数据在一条直线上,
#如果method="jitter",jitter参数调整数据点为了避免重合进行分散的程度
#如果method="stack",offset参数调整数值相同的点之间的间隔
#同样可以用main设置图标题,xlab设置横轴标题
data <- c(1, 1, 2, 3, 5, 8, 13, 21, 34)
par(mfrow=c(1, 2)) #设置两张图并排显示,这里的格式为1行2列
stripchart(data, method = "jitter", jitter=1)
stripchart(data, method = "stack", offset=1)
下图为画出的效果:
可以看出,大部分数据在左侧更加紧凑,越向右越分散。
结束语
介绍了这么多种用R语言做数据可视化的方式,做数据分析最重要的还是选择适合数据类型和分析目的的图。有任何问题或想法欢迎留言和评论!
边栏推荐
- Gateway 根据服务名路由失败,报错 Service Unavailable, status=503
- Pat 1097 duplication on a linked list (25 points)
- @Autowired 和 @Resource 的区别
- JS变量类型以及常用类型转换
- Esp8266 connects to bafayun (TCP maker cloud) through Arduino IED
- Working principle of genius telephone watch Z3
- ES6 grammar summary -- Part 2 (advanced part es6~es11)
- Classification, understanding and application of common methods of JS array
- arduino获取随机数
- Fashion Gen: the general fashion dataset and challenge paper interpretation & dataset introduction
猜你喜欢
Esp8266 uses Arduino to connect Alibaba cloud Internet of things
Missing value filling in data analysis (focus on multiple interpolation method, miseforest)
Analysis of charging architecture of glory magic 3pro
Page performance optimization of video scene
Basic knowledge of lithium battery
Mp3mini playback module Arduino < dfrobotdfplayermini H> function explanation
MySQL takes up too much memory solution
level16
Feature of sklearn_ extraction. text. CountVectorizer / TfidVectorizer
Basic operations of databases and tables ----- creating data tables
随机推荐
ESP8266使用arduino连接阿里云物联网
Variable parameter principle of C language function: VA_ start、va_ Arg and VA_ end
(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
Keyword inline (inline function) usage analysis [C language]
MySQL占用内存过大解决方案
STM32 如何定位导致发生 hard fault 的代码段
Unit test - unittest framework
1081 rational sum (20 points) points add up to total points
[esp32 learning-1] construction of Arduino esp32 development environment
Raspberry pie tap switch button to use
Several declarations about pointers [C language]
Comparaison des solutions pour la plate - forme mobile Qualcomm & MTK & Kirin USB 3.0
Walk into WPF's drawing Bing Dwen Dwen
Pytoch temperature prediction
Redis based distributed locks and ultra detailed improvement ideas
open-mmlab labelImg mmdetection
Kaggle competition two Sigma connect: rental listing inquiries (xgboost)
Pat 1097 duplication on a linked list (25 points)
open-mmlab labelImg mmdetection
Arduino JSON data information parsing