专栏首页生信补给站R绘图-ggplot2 (2)

R绘图-ggplot2 (2)

4、标尺(Scale)

画图就是在做映射,不管是映射到不同的几何对象上,还是映射各种图形属性。

#这一小节介绍标尺,在对图形属性进行映射之后,使用标尺可以控制这些属性的显示方式,

#比如坐标刻度,可能通过标尺,将坐标进行对数变换;比如颜色属性,也可以通过标尺,进行改变。

#以数据(Data)和映射(Mapping)一节中所画散点图为例,将Y轴坐标进行log10变换,再自己定义颜色为彩虹色。

ggplot(small)+geom_point(aes(x=carat, y=price, shape=cut, colour=color))+scale_y_log10()+scale_colour_manual(values=rainbow(7))

5、统计变换(Statistics)

统计变换对原始数据进行某种计算,然后在图上表示出来,例如对散点图上加一条回归线。

#这里就不按颜色、切工来分了,不然ggplot会按不同的分类变量分别做回归,图就很乱,

#如果我们需要这样做,我们可以使用分面,这个将在后面介绍。

ggplot(small, aes(x=carat, y=price))+geom_point()+scale_y_log10()+stat_smooth()

#这里,aes所提供的参数,就通过ggplot提供,而不是提供给geom_point,因为ggplot里的参数,相当于全局变量,

#geom_point()和stat_smooth()都知道x,y的映射,如果只提供给geom_point(),则相当于是局部变量,

#geom_point知道这种映射,而stat_smooth不知道,当然你再给stat_smooth也提供x,y的映射,

#不过共用的映射,还是提供给ggplot好。

ggplot2提供了多种统计变换方式:

stat_abline stat_contour stat_identity stat_summary

stat_bin stat_density stat_qq stat_summary2d

stat_bin2d stat_density2d stat_quantile stat_summary_hex

stat_bindot stat_ecdf stat_smooth stat_unique

stat_binhex stat_function stat_spoke stat_vline

stat_boxplot stat_hline stat_sum stat_ydensity

统计#变换是非常重要的功能,我们可以自己写函数,基于原始数据做某种计算,并在图上表现出来,也可以通过它改变geom_xxx函数画图的默认统计参数。

比如#把boxplot的中位线替换成了平均值来作图。

6、坐标系统(Coordinante)

坐标系统控制坐标轴,可以进行变换,例如XY轴翻转,笛卡尔坐标和极坐标转换,以满足我们的各种需求。

#坐标轴翻转由coord_flip()实现

ggplot(small)+geom_bar(aes(x=cut, fill=cut))+coord_flip()

#转换成极坐标可以由coord_polar()实现:

ggplot(small)+geom_bar(aes(x=factor(1), fill=cut))+coord_polar(theta="y")

#这也是为什么之前介绍常用图形画法时没有提及饼图的原因,饼图实际上就是柱状图,只不过是使用极坐标而已,柱状图的高度,对应于饼图的弧度,饼图并不推荐,因为人类的眼睛比较弧度的能力比不上比较高度(柱状图)

#靶心图:

ggplot(small)+geom_bar(aes(x=factor(1), fill=cut))+coord_polar()

#风玫瑰图(windrose)

ggplot(small)+geom_bar(aes(x=clarity, fill=cut))+coord_polar()

7、图层(Layer)

photoshop流行的原因在于PS 3.0时引入图层的概念,ggplot的牛B之处在于使用+号来叠加图层,这堪称是泛型编程的典范。

在前面散点图上,我们已经见识过,加上了一个回归线拟合的图层。

#有了图层的概念,使用ggplot画起图来,就更加得心应手。

#做为图层的一个很好的例子是蝙蝠侠logo,batman logo由6个函数组成,在下面的例子中,我先画第一个函数,之后再加一个图层画第二个函数,不断重复这一过程,直到六个函数全部画好。

require(ggplot2)

f1data.frame(x=x,y=y)

d -3*sqrt(33)/7,]

return(d)

}

x1data.frame(x2=x2, y2=y2)

p2data.frame(x3=x3, y3=y3)

p3data.frame(x4=x4,y4=y4)

p4data.frame(x5=x5,y5=y5)

p5data.frame(x6=x6,y6=y6)

p6

#下面再以生物界中常用的柱状图+误差图为实例,展示ggplot2非常灵活的图层。

Normaldata.frame(V=c("Normal", "Cancer"), mean=m, sd=s)

d$V

参考链接:http://ygc.name/2014/05/11/use-ggplot2/

本文分享自微信公众号 - 生信补给站(Bioinfo_R_Python)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-05-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R-ggpmisc|回归曲线添加回归方程,R2,方差表,香不香?

    散点图绘制回归曲线很常用,那么添加上回归方程,P值,R2或者方差结果表等可以展示更量化的信息。

    西游东行
  • TCGA|根据somatic mutation绘制突变景观图(oncoplot)和基因词云

    使用 XENA下载的TCGA-LAML.mutect2_snv.tsv文件绘制基因词云和突变景观图。

    西游东行
  • ggplot2-theme(主题)

    概括的说元素函数主要有四种:element_text(文本)、element_lines(线条)、element_rect(矩形块)和element_blank...

    西游东行
  • python 下chmod方法简单介绍

             闲着无聊,想着如何能用python完全替代shell来管理服务器,呵呵,这个想法实在疯狂,首先来介绍下os模块下的chmod这个方法来替代s...

    py3study
  • 信息设计图表

    网上可以搜到使用Excel的方法介绍,如果使用PowerBI怎样完成呢?今天小试了一下Inforgraphic Designer信息图表设计这个自定义视觉对象(...

    公众号PowerBI大师
  • Java常量池详解,秒懂各种对象相等操作

    (2)节省运行时间:比较字符串时,== 比equals()快。对于两个引用变量,只用==判断引用是否相等,也就可以判断实际值是否相等。

    Java识堂
  • 解决TeamViewer连接要等待伙伴确认

    一开始Teamview工作的好好的,升级之后莫名的总是提示要"等待伙伴确认"。重装了一下两边的Teamview软件都无济于事,然后各种Baidu、Google都...

    行 者
  • 《Hello NumPy》系列-运算与函数应用

    高阶部分篇篇都是干货,建议大家不要错过任何一节内容,最好关注我,方便看到每次的文章推送。

    小一不二三
  • springboot(十二):springboot如何测试打包部署

    有很多网友会时不时的问我,spring boot项目如何测试,如何部署,在生产中有什么好的部署方案吗?这篇文章就来介绍一下spring boot 如何开发、调试...

    纯洁的微笑
  • Linux磁盘管理之LVM快速入门配置

    描述:LVM——Logical Volume Manager就是动态卷管理在Linux2.4内核以上实现的磁盘管理技术,它可以将多个硬盘和硬盘分区做成一个逻辑卷...

    WeiyiGeek

扫码关注云+社区

领取腾讯云代金券