“ 直方图和条形图是我们必不可少的统计图伙伴,不是吗?”
给出上节作业答案和结果图
# 仍旧使用mtcars数据集
mt <- mtcars
# 我们看看disp和hp之间的关系 绘制散点图
qplot(disp,hp,data = mt)
# 接下来让不同的gear数呈现不同的颜色
qplot(disp,hp,data = mt,color = gear)
# 不同的am值呈现不同大小
qplot(disp,hp,data = mt,color = gear,size = am)
# 让所有点透明度为0.6
qplot(disp,hp,data = mt,color = gear,size = am,alpha = I(.6))
# 图结果如下
上面的一篇文章是很久之前的事情了,因为可视化系列的内容做着非常的麻烦,为了保证每一篇文章都是精品,所以略微拖一拖时间才能更新。如果你忘了上文讲了什么去,请在看这篇文章之前回顾一下讲解过的使用qplot绘制散点图和气泡图。
直方图和条形图也是我们非常常见的统计图形,我们一般使用前者描述数据的分布情况,后者对类别变量进行分组展示,这就是我们这两种图像最常用的情况了。而本文继续使用qplot来绘制条形图和使用基本的ggplot语句绘制直方图。
废话不多说,让我们开始吧。
使用qplot绘制直方图
直方图一般来说都是用来描述数据的分布,如果不进行展示的话,只是单纯的自己看一看,使用基础的hist其实也可以了,不过作为教学部分,此处还是展示一下使用qplot绘制直方图的方法。
第一步当然是加载我们万能的ggplot2包了,然后加载了我们的两个数据集,直方图部分我们只使用数据集diamonds
library(ggplot2)
mt <- mtcars
dia <- diamonds
下面绘制最基本的直方图
qplot(data = dia,geom = 'histogram',
x = carat)
丑死了有么有?我们给它加个颜色吧。
使用fill参数改变填充颜色 但是注意一定要加上I()函数不进行映射哦!
qplot(data = dia,geom = 'histogram',
x = carat,
fill = I('lightblue'))
穿上了衣服是不是漂亮多了呢,我们在给它穿个外套吧
是不是已经非常漂亮了呢?当然了,我们也可以从图中清晰的看出来,钻石的克拉数集中于0-1之间,对于超过2.5克拉的钻石数量已经非常的少了。
如果我们把这部分非常少的钻石数据拿出来,对比其它的特征进行分析,也许会有什么新的发现呢!
使用ggplot绘制条形图
上文简单的讲解了关于直方图的绘制,后面会有更加详细的教程来讲解绘制更加优美和漂亮的直方图以及平滑以后的密度曲线等等。
现在让我们转换视角,来绘制条形图吧!
条形图本身是一种非常好用而且常见的统计图表,我们其实在小学的时候就已经学习这种统计图了,而到工作和科研中居然还很常见,可见它的魅力所在。
(此处按理说都应该使用qplot,但是qplot的stat参数不可用,所以只能提前上一些ggplot的代码了)
下面绘制最基本的条形图,
ggplot(data = mt,aes(x = factor(cyl),
y = mpg,
fill = factor(am))) +
geom_bar(stat = 'identity')
简单解释一下ggplot的代码,格式非常统一,首先是指定画图用的x和y参数,然后fill参数是说使用哪一列变量对条形的填充色进行填充,然后stat是我们使用的统计方法,这里大家记住使用identity就好。
默认效果看起来不是很好看,不过我们也能看出来一些关键的信息,比如cyl小的地方am的分布和cyl大的地方的am的分布是相反的等等。
更改条形的粗细
我们上面的条形有些粗了,看起来不是很美观,所以我们下面来修改条形的粗细,让它更美观些。
ggplot(data = mt,aes(x = factor(cyl),
y = mpg,
fill = factor(am))) +
geom_bar(stat = 'identity',
width = .5)
这里要注意,我们的宽度参数是0-1之间的,大家最好不要设置为超过1的数值,这样会产生一个不好的问题,就是条形互相挤压的情况。
修改条形的位置
我们很多时候看见的条形图都不是堆积的,而是两个条形挨着并排放在一起,我们把这种称为它们的位置关系,所以使用position参数进行修改。
(顺手改了个颜色)
ggplot(data = mt,aes(x = factor(cyl),
y = mpg,
fill = factor(am))) +
geom_bar(stat = 'identity',position = 'dodge',
width = .5) +
scale_fill_manual(values = c("#e0f9b5","#a5dee5"))
是不是效果还可以呢,不过这些都是最最基本的绘制了,后面我们正式讲解条形图的绘制的时候会分两课来讲解,也会使用更合适的数据,这个数据本身并不是很恰当,所以效果目前也就做到这样了。
下一篇可视化的文章会讲解关于折线图的绘制,同样是使用qplot进行处理,也可以获得比较好的外观。
如果你喜欢我的文章,请收藏我的文章并且给我个赞,你的支持就是我更新的最大的动力,关注我会有更多惊喜哦,专注于生物信息学以及数据分析入门和进阶教程,也许我给不了你从10-100,但是我可以给你最好的从0-10!
最后,关注我的公众号,领取更多学习资料吧!!!
打开v搜索,”轻松玩转生信“或者从下面文章进去获取二维码关注哦