• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

R语言——ggplot2可视化

武飞扬头像
真是喵啊
帮助1

1 例子引入

1.ggplot2中,图是采用串联起来的( )号函数创建的,每个函数修改属于自己的部分。

library("ggplot2")
ggplot(data=mtcars,aes(x=wt,y=mpg)) 
geom_point() 
labs(title="Automobile Data",x="weight",y="Miles Per Gallon")

学新通

library("ggplot2")
ggplot(data=mtcars,aes(x=wt,y=mpg)) 
geom_point(pch=17,color="blue",size=2) 
geom_smooth(method='lm',color='red',linetype=2) 
labs(title="Automobile Data",x="weight",y="Miles Per Gallon")

学新通

2.ggplot()函数 初始化图形指定数据源和变量。ggplot()设置图形但没有自己的视觉输出,需要几何函数来添加图形

3.aes()函数指定每个变量扮演的角色

4.geom_point()几何函数,创建散点图

5.geom_smooth()几何函数,创建拟合曲线

6labs()可选函数,用来添加注释。

ggplot2包提供了分组和小面化的方法

分组:在一个图形中显示两组或多组观察结果

小面化:在单独、并排的图形上来显示观察组

mtcars$am<-factor(mtcars$am,levels=c(0,1),labels=c("Automatic","Manual"))
mtcars$vs<-factor(mtcars$vs,levels=c(0,1),labels=c("V-Engine","Straight Engine"))
mtcars$cyl<-factor(mtcars$cyl)

ggplot(data=mtcars,aes(x=hp,y=mpg,shape=cyl,color=cyl)) 
geom_point(size=3) 
facet_grid(am~vs) 
labs(title="Automobile Data by Engine Type",x="Horsepower",y="Miles Per Gallon")

学新通

2 用几何函数指定图的类型

ggplot()函数指定要绘制的数据源和变量,集合函数则指定这些变量如何在视觉上进行表示(使用点、条、线和阴影区)

函数 添加
geom_bar() 条形图
geom_boxplot() 箱线图
geom_density() 密度图
geom_histogram() 直方图
geom_hline() 水平线
geom_jitter() 抖动图
geom_line() 线图
geom_point() 散点图
geom_rug() 地毯图
geom_smooth() 拟合曲线
geom_text() 文字注解
geom_violin() 小提琴图
geom_vline() 垂线
library(ggplot2)
data(singer,package="lattice")
ggplot(singer,aes(x=height)) geom_histogram() 

学新通

#注意箱线图要指定出X,y才能达到此效果
ggplot(singer,aes(x=voice.part,y=height)) geom_boxplot()

学新通

几何函数还有很多选项可以调整,加以使用

library(ggplot2)
data(Salaries,package="carData")
ggplot(Salaries,aes(x=rank,y=salary)) 
geom_boxplot(fill="cornflowerblue",color="black",notch=TRUE) 
geom_point(position="jitter",color="blue",alpha=.5) 
geom_rug(sides="l",color="black")
#箱线图的填充色为cornflowerblue,边线颜色为"black",设置为有凹槽的箱线图
#散点图采取“jitter”,即抖动的形式,颜色为"blue",透明度50%
#地毯图放在左部,颜色为黑色

学新通

将小提琴图和箱线图结合成新的图形

data(singer,package="lattice")
ggplot(singer,aes(x=voice.part,y=height)) 
geom_violin(fill="lightblue") 
geom_boxplot(fill="lightblue",width=.2)

学新通

3 分组

分组是通过ppgplot2图将一个或多个带有诸如颜色、形状、填充、尺寸和线类型的视觉特征的分组变量来完成的。

aes()函数负责分配变量(图形的视觉特征),所以这是一个分配分组变量的自然的地方。

以学术等级分组的大学薪水的密度图

library(car)
data(Salaries,package='car')
library(ggplot2)
ggplot(data=Salaries,aes(x=salary,fill=rank)) geom_density(alpha=.3)
#alpha是设置透明度

学新通

博士毕业年数和薪水的散点图

ggplot(Salaries,aes(x=yrs.since.phd,y=salary,color=rank,shape=sex)) geom_point()

学新通

分组条形图的三个版本

library(cowplot)
p1<-ggplot(Salaries,aes(x=rank,fill=sex)) 
geom_bar(position='stack') labs(title='position="stack"')

p2<-ggplot(Salaries,aes(x=rank,fill=sex)) 
geom_bar(position='dodge') labs(title='position="dodge"')

p3<-ggplot(Salaries,aes(x=rank,fill=sex)) 
geom_bar(position='fill') labs(title='position="fill"')
plot_grid(p1,p2,p3,ncol=3)

[]:

学新通

【可以发现,第三个图应该是比例,y轴的标签是错滴】

关于cowplot包plot_gird函数的拼接使用方法https://www.163.com/dy/article/GRQOPGJ30552BFPX.html

奇奇怪怪的实验

library(cowplot)
p1<-ggplot(Salaries,aes(x=rank,fill=sex)) 
geom_bar()

p2<-ggplot(Salaries,aes(x=rank)) 
geom_bar(fill='red')

p3<-ggplot(Salaries,aes(x=rank,fill='red')) 
geom_bar()
plot_grid(p1,p2,p3,ncol=3)

学新通

图1 :sex通过条形图中填充颜色展示

图2:geom_bar(fill=‘red’)每个条形图都用红色填充

图3:aes(fill=‘red’)假定red是变量的名字

通常变量应该设置在aes()函数内,分配常熟应该在aes()函数外

4 刻面

刻面:也就是网格图形。用facet_wrap()函数和facet_grid()函数实现

这样,组在图中并排出现而不是重叠为单一的图形,关系是清晰的。

data(singer,package='lattice')
library(ggplot2)
ggplot(data=singer,aes(x=height)) geom_histogram() facet_wrap(~voice.part,nrow=4)

学新通

包含刻面和分组的图

ggplot(Salaries,aes(x=yrs.since.phd,y=salary,color=rank,shape=rank)) geom_point() facet_grid(.~sex)

学新通

data(singer,package='lattice')
library(ggplot2)
ggplot(singer,aes(x=height,fill=voice.part)) 
geom_density() 
facet_grid(voice.part~.)

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggjjgj
系列文章
更多 icon
同类精品
更多 icon
继续加载