R绘图-ggplot2 (2)

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 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

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
4月前
|
数据采集 数据可视化 数据处理
我们来看一个简单的`matplotlib`代码示例,它使用`plot()`和`scatter()`函数来绘制二维图形。
我们来看一个简单的`matplotlib`代码示例,它使用`plot()`和`scatter()`函数来绘制二维图形。
|
6月前
ggplot2如何在R语言中绘制表格
ggplot2如何在R语言中绘制表格
|
数据格式
如何绘制热图?ggplot2入门笔记
如何绘制热图?ggplot2入门笔记
|
6月前
|
Python
Matplotlib figure图形对象
Matplotlib figure图形对象
74 1
|
编解码 数据可视化 数据挖掘
R语言之 ggplot 2 和其他图形
R语言之 ggplot 2 和其他图形
97 0
|
数据可视化 API 图形学
ggplot
ggplot是一个基于Python的数据可视化库,灵感来自于R语言中的ggplot2库。它提供了一种语法简洁、灵活而强大的方式来创建各种类型的统计图表。
199 0
|
数据挖掘
ggplot2|从0开始绘制折线图
ggplot2|从0开始绘制折线图
161 0
|
数据挖掘
ggplot2|从0开始绘制直方图
ggplot2|从0开始绘制直方图
299 0