R包——ggplot2(二)
关于ggplot包(二)
关于ggplot包(二)
标尺(Scale)
从前面可以看到,画图其实就是在做映射,不管是映射到不同的几何对象上,还是映射各种图形属性。在对图形属性进行映射之后,使用标尺可以控制这些属性的显示方式,如坐标刻度,如颜色属性。
> ggplot(small)+geom_point(aes(x=carat,y=price,shape=cut,colour=color))+scale_y_log10()+scale_colour_manual(values=rainbow(7))#将Y轴坐标进行log10变换,自己定义颜色为彩虹色
统计变换(Statistics)
统计变换对原始数据进行某种计算,然后在图上表示出来,如对散点图上加一条回归线
> 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
坐标系统(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()
风玫瑰图
> ggplot(small)+geom_bar(aes(x=clarity, fill=cut))+coord_polar()
图层(Layer)
对于PS的图层概念,ggplot也能使用+号来叠加图层
分面(Facet)
分面可以让我们按照某种给定的条件,对数据进行分组,然后分别画图
> ggplot(small, aes(x=carat, y=price))+geom_point(aes(colour=cut))+scale_y_log10() +facet_wrap(~cut)+stat_smooth()
主题(Theme)
通过ggplot画图之后,我们可能还需要对图进行定制,像title, xlab, ylab这些高频需要用到的,自不用说,ggplot2提供了ggtitle(), xlab()和ylab()来实现。
但是这个远远满足不了需求,我们需要改变字体,字体大小,坐标轴,背景等各种元素,这需要通过theme()函数来完成。
ggplot2提供一些已经写好的主题,比如theme_grey()
为默认主题,theme_bw()
为白色背景的主题,还有theme_classic()
主题,和R的基础画图函数较像。
别外ggthemes包提供了一些主题可供使用,包括:
theme_economist theme_economist_white
theme_wsj theme_excel
theme_few theme_foundation
theme_igray theme_solarized
theme_stata theme_tufte
> p<-ggplot(small)+geom_boxplot(aes(x=cut, y=price,fill=color))
> p
> require(ggthemes)
载入需要的程辑包:ggthemes
> p + theme_wsj()
详细说明,可以参考?theme
的帮助文档
二维密度图
> ggplot(diamonds, aes(carat, price))+ stat_density2d(aes(fill = ..level..), geom="polygon")+ scale_fill_continuous(high='darkred',low='darkgreen')
R包——ggplot2(二)的更多相关文章
- R包——ggplot2(一)
关于ggplot2包(一) 关于ggplot2包(一) ggplot2基本要素 数据(Data)和映射(Mapping) 几何对象(Geometric) 标尺(Scale) 统计变换(Statisti ...
- R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将 ...
- R语言中常用包(二)
数据导入 以下R包主要用于数据导入和保存数据 feather:一种快速,轻量级的文件格式.在R和python上都可使用readr:实现表格数据的快速导入.中文介绍可参考这里readxl:读取Micro ...
- R 包
[下面列出每个步骤最有用的一些R包] .数据导入 以下R包主要用于数据导入和保存数据: feather:一种快速,轻量级的文件格式:在R和python上都可使用 readr:实现表格数据的快速导入 r ...
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...
- R包介绍
R语言的使用,很大程度上是借助各种各样的R包的辅助,从某种程度上讲,R包就是针对于R的插件,不同的插件满足不同的需求,截至2013年3月6日,CRAN已经收录了各类包4338个. 一. R语言包的安装 ...
- 机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集
机器学习数据集,主数据集不能通过,人脸数据集介绍,从r包中获取数据集,中国河流数据集 选自Microsoft www.tz365.Cn 作者:Lee Scott 机器之心编译 参与:李亚洲.吴攀. ...
- 极简 R 包建立方法--转载
https://cosx.org/2013/11/building-r-packages-easily/ 最近想试一下捣腾一个 R 包出来,故参考了一些教程.现在看到的最好的就是谢益辉大大之前写过的开 ...
- 用R包中heatmap画热图
一:导入R包及需要画热图的数据 library(pheatmap) data<- read.table("F:/R练习/R测试数据/heatmapdata.txt",head ...
随机推荐
- 2015-01-15百度地图API 新海量点
整理一下昨天写的百度地图 项目最开始写了一个百度地图,但是速度那慢的简直了 所以昨天将百度地图API的海量点 写了一下 1秒啊 o.o 厉害 OK 记下 此乃需要的js <!--添加百度地图- ...
- aps.net要掌握的技术
Spring.Net.NHibernate.Entity Framework.ASP.Net MVC.HTML5.WCF.数据库集群.分布式应用集群.高性能读写NoSql
- null类型的字段加1
很高兴今天学到了一种新方法. 数据库中字段类型为Long ,值可能为null,也可能是某一数.因此对该字段数值进行 +1操作时需要判断该值是null还是数值. 同时实现更新操作.具体如下: updat ...
- c++中,size_typt, size_t, ptrdiff_t 简介
size_type 类型 从逻辑上来讲,size() 成员函数似乎应该返回整形数值,或如 2.2 节“建议”中所述的无符号整数.但事实上,size 操作返回的是 string::size_type 类 ...
- Csharp多态的实现(抽象类)
1.什么是抽象类 抽象类是虚拟的类,不能创建对象,用abstract修饰,在子类中用override进行重写 抽象类中可以存放抽象方法,属性,也可以存放非抽象方法,属性(这个在下面的代码可以看出来的) ...
- Object的增。删。查。改。遍历
1.增: 1.向对象添加属性和方法 (私有) ---> obj.属性 =""; 2.向对象原型添加方法 (公共) ---> obj.prototype. ...
- java 线程之间通信以及notify与notifyAll区别。
jvm多个线程间的通信是通过 线程的锁.条件语句.以及wait().notify()/notifyAll组成. 下面来实现一个启用多个线程来循环的输出两个不同的语句. package com.app. ...
- cmd正常启动tomcat,而 从eclipse启动出现 404
设置Tomcat的路径,启动Tomcat,先测试一下环境,在浏览器中输入http://127.0.0.1:8080/ 提示 404找不到网页.出现这种问题然后试了一下,tomcat在外面直接启动 然 ...
- Java提高学习之Object类详解(1)
转自:http://www.importnew.com/10304.html 问:什么是Object类? 答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父 ...
- java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception
在使用ajax主题时出现上述错误的解决办法是将form表单中的action属性值改为*.action后就可以解决.至于为什么会这样不太明白.但是修改action的属性值以后就会出现另一个错误即 对应的 ...