ggplot2
在R语言中ggplot2是一个用来绘制图形的R包,gg的意思是Grammer of Graphics,意思就是绘图的语法,作者是Hadley Wickham,这个大神也是统计学诺贝尔奖的获得者
- ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离
- ggplot2的原理是按照图层作图的
- ggplot2是保有命令式作图的调整函数,使其更具有灵活性
- ggplot2将常见的统计变换融入到绘图当中
这个库的逻辑在我看来式真正实现一个图层叠加的概念:一句话代表一张图,然后最小的单元图层
参考链接:https://blog.csdn.net/weixin_41929524/article/details/79765882
ggplot2代码实现和效果呈现
(1)概率密度图的绘制
library(tidyverse)
diamonds
ggplot(diamonds, aes(carat, color = cut, fill = cut)) + geom_density(alpha = .25)
函数语法:ggplot(data, aes(data的单维数据, color = cut, fill = cut)) + geom_density(alpha = .25)
color = cut是表示是否画出来的线条是否填充颜色
fill = cut是表示是否根据数据的内容分组
结构:按照+号分为两个部分,第一个部分是基础的一些数据以及图形的基础设置(颜色,填充等),第二部分就是需要画出来的图是什么内容,画直方图还是密度图等
(2)直方图绘制
ggplot(diamonds, aes(carat)) + geom_histogram(fill = ‘blue’, color = ‘white’, bins=50)
这里需要注意,直方图的颜色和填充绘制是在+号的后面那个部分,其中bins的参数是代表需要划分多组组,这里选择50
ggplot(diamonds, aes(carat, fill=cut)) + geom_histogram(color = ‘white’)
(3)柱形图的绘制
关于柱形图的绘制就需要涉及到x,y的一些选择,在画之前必须知道横坐标是什么,纵坐标是什么
ggplot(diamonds, aes(color, price)) + geom_bar(stat = ‘identity’, fill = ‘blue’)
这里的横坐标是color的组,总坐标是price的价格总和
因为是一维的数据,所以这里stat = 'identity’需要加上
如果需要一些简单的运算得到y的数据,stat = ‘summary’,比如如果将上面的数据换成mean,可以选择用下面的代码
ggplot(diamonds, aes(color, price, fill = color)) + geom_bar(stat = ‘summary’, fun.y = ‘mean’)
如果需要多组的数据叠加或者同时展示,可以使用下面代码
ggplot(diamonds, aes(color, price, fill = cut)) + geom_bar(stat = ‘identity’, position = position_dodge())
(4)点图
ggplot(diamonds, aes(carat, depth)) + geom_point(size=5, shape=17, color = ‘purple’)
可以根据自己的需求和喜好选择不同的点表示这个点
(5)线图
ggplot(diamonds, aes(carat, depth)) + geom_line(size=1, linetype = 2, color = ‘purple’)
可以进行关于绘制线的一些属性,线型,线的颜色,线的size比较
除此之外,也可以对这个线图的数据进行点图的叠加
ggplot(diamonds, aes(carat, depth)) +
geom_line(size=1, linetype = 2, color = ‘purple’) +
geom_point(size=2,shape=17, color=‘red’)
如果需要将多组画在一起展示,可以使用下面的操作
这次换一个其他的数据集,先对里面的数据进行简单的数据处理,得到需要的数据
ggplot(df, aes(cyl, mpg_m)) + geom_point(size = 3)
先大概看一下数据
因为am的数据经过上面的处理,是一个分组的因子,里面包含了不同组别的信息,所以我为了体现分组的信息,将这个组别的信息传入进去
ggplot(df, aes(cyl, mpg_m, color = am)) + geom_point(size = 3)
然后就会根据不同组的因子选择不同的颜色
因为是am的组别的值是一个连续的状态,所以这里默认会出现这个渐变的情况,需要在画图前把这个值转变成离散的状态
df a m < − a s . f a c t o r ( d f am <- as.factor(df am<−as.factor(dfam) #转换成因子型的数据
ggplot(df, aes(cyl, mpg_m, shape=am, color = am)) + geom_point(siza=3)
还可以将线图和点图叠加在一起
ggplot(df, aes(cyl, mpg_m, color = am)) + geom_line(aes(linetype = am), size=1) + geom_point(aes(shape=am), size=3)
(6)气泡图
气泡图与散点图相似,不同之处在于,气泡图允许在图表中额外加入一个表示大小的变量。实际上,这就像以二维方式绘制包含三个变量的图表一样。气泡由大小不同的标记(指示相对重要程度)表示
使用下面的函数可以绘制气泡图
ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) + geom_point(aes(size=cyl)) + scale_size(breaks = c(4,6,8))
color颜色这个参数一定要传入离散的数据,所以这里需要使用factor函数转换,下面的图黑色的表示数值程度的大小,颜色是用下面的factor(cyl)表示
(7)回归曲线的拟合
通过绘制的散点图画出拟合散点图的曲线
ggplot(mtcars, aes(wt, mpg)) + geom_point() + geom_smooth(method = ‘lm’, formula = y~x, color=‘red’, se = T)
图中的阴影部分是表示误差的范围
(8)箱型图
首先这里使用自定义的一些小数据展示
然后这就是里面的数据结果展示
箱型图的构造