qplot的简单使用-程序员宅基地

技术标签: R  plot  R语言  大数据  

我从这周开始参加系里的一个关于ggplot2的study group
所以我希望能把每次的主要内容以笔记的形式整理下来
内容是基于这本书 ggplot2: Elegant Graphics for Data Analysis
另外据说这本也是个不错的参考 R Graphics Cookbook

下面是ggplot2的一些文档和github上的源代码
http://docs.ggplot2.org/current/
https://github.com/hadley/ggplot2

本篇文章涉及 ggplot2: Elegant Graphics for Data Analysis 中的第二章
在正式开始学习ggplot2命令之前 我们首先讨论qplot
qplot是quick plot的缩写 旨在用最简短的命令画出我们所需的图

==========

1. 数据

首先在R中安装ggplot2
install.packages("ggplot2")
library(ggplot2)

我们使用的数据
X <- read.delim(" http://www.stat.ubc.ca/~rickw/gapminderDataFiveYear.txt")
str(X)

'data.frame': 1704 obs. of 7 variables:
 $ country : Factor w/ 142 levels "Afghanistan",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ year : int 1952 1957 1962 1967 1972 1977 1982 1987 1992 1997 ...
 $ pop : num 8425333 9240934 10267083 11537966 13079460 ...
 $ continent: Factor w/ 5 levels "Africa","Americas",..: 3 3 3 3 3 3 3 3 3 3 ...
 $ lifeExp : num 28.8 30.3 32 34 36.1 ...
 $ gdpPercap: num 779 821 853 836 740 ...
 $ year.fac : Factor w/ 12 levels "1952","1957",..: 1 2 3 4 5 6 7 8 9 10 ...

==========

2. qplot基本用法

qplot最简单的使用方法和R base中的plot基本一样 可以用来画散点图
qplot(gdpPercap, lifeExp, data=X)
 

使用 color = year 可以将该变量用不同颜色标示出来
这里year是个连续的变量 所以颜色以谱的形式标示
用 log = "x" 表示对横轴的变量进行log变换
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year)
 

也可以将year变成factor 此时会用离散的颜色标示
qplot(gdpPercap, lifeExp, data=X, log = "x", color = factor(year))
 

使用 size = pop 用标志的大小显示该变量的大小
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year, size = pop)
 

还可以使用 shape = continent 用不同的标志来显示该变量
qplot(gdpPercap, lifeExp, data=X, log = "x", color = year, shape = continent)
 

最后 alpha=I(0.25) 指定透明度 0为全透明 1为不透明
当数据重叠严重时比较有用
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.25))
 

==========

3. geom

geom是geometric object的简称 用来生成不同种类的图

=====

3.1 smooth

首先是smooth 用来描述数据的平滑趋势
注意此处 c("point", "smooth") 表示先画point 再画smooth
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), geom=c("point", "smooth"))
 

相反的 c("smooth", "point") 就是先画smooth 再画point
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), geom=c("smooth", "point"))
 

除了默认的平滑方法之外 还可以自行指定 比如线性模型
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), geom=c("point", "smooth"), method=lm)
 

另外还可以自行指定公式 例如多项式回归
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), geom=c("point", "smooth"), method=lm, formula = y ~ poly(x, 3))
 

=====

3.2 line和path

line会将数据沿横轴方向按顺序连接起来 一般用来表示时间序列数据
qplot(pop, lifeExp, data=X, log = "x", alpha=I(0.5), color=year, geom="line")
 

path会将原始数据中相邻的两个点连接起来 一般用来表示二维数据随时间的变化
qplot(gdpPercap, lifeExp, data=X, log = "x", alpha=I(0.5), color=year, geom=c("point", "path"))
 

=====

3.3 boxplot和jitter

和R base中的boxplot一样 横轴的数据需要是factor
X$year.fac <- factor(X$year)
注意 color=I("red") 中的I()是必须的 否则"red"会被当做一个新的factor
qplot(year.fac, lifeExp, data=X, color=I("red"), geom="boxplot")
 

jitter和boxplot类似
qplot(year.fac, lifeExp, data=X, color=I("red"), geom="jitter")
 

=====

3.4 histogram和density

这里使用 fill=continent 将直方图按不同的continent分割开
qplot(lifeExp,data=X, geom="histogram", fill=continent)
 

density与histogram类似
qplot(lifeExp,data=X, alpha=I(0.5), geom="density", color=continent)
 

==========

4. facets

使用facets可以将一个图根据一个或两个变量的值分别显示出来 有利于更直观地进行比较
~左边表示每一行的变量 右边表示每一列的变量
比如 continent~. 根据continent值的不同 将density的图在每一行里显示出来
qplot(lifeExp,data=X, geom="density", facets=continent~.)
 

类似的 facets=year~continent 根据每一行year和每一列continent值的不同 将histogram的图显示出来
qplot(lifeExp,data=X, geom="histogram", facets=year~continent)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yjz_sdau/article/details/52755656

智能推荐

Python 读取xml格式文件,可以读取xml中的注释内容_python 找到xml特定字符,也包含注释中的内容-程序员宅基地

文章浏览阅读1.6k次。Python 读取xml内容带注释,不会去除注释内容_python 找到xml特定字符,也包含注释中的内容

html5微课程制作,用H5做微课的好处,你知道多少?-程序员宅基地

文章浏览阅读359次。原标题:用H5做微课的好处,你知道多少?大多数老师都曾使用过传统网页技术来制作移动学习课件。对于会使用Word的老师而言,只要再加上一些编辑工具或网页范例即可以套用,这是相当简单的。但是,由于传统网页技术本身的局限,此类课件通常以文字+图片为主,缺乏声影的配合,更无法引入一些交互参与的教学设计,使得学生注意力难以集中,学习效果也不尽如人意。而且现阶段,大部分微课课程还仅采用视频方式表现,同样缺少交..._微视频h5是什么

大学感想_wendy从事教育工作的读后感-程序员宅基地

文章浏览阅读635次。大学感想 九月近在眼前,对于即将走进大学校园的新生而言,大学生活有一些新鲜,有一些好奇,更有一些迷茫。大学生活和你想象中的一样吗?听听大学里的师哥师姐们是怎么说的吧。相信听了他们的建议,一定会让你未雨绸缪。 大学里,同寝室的同学关系最_wendy从事教育工作的读后感

光滑曲线拟合算法_光滑曲线拟合(惩罚样条法)-程序员宅基地

文章浏览阅读2.3k次。/* 二次抛物线法绘制曲线函数 */ void paowuxian(int *x,int *y,int n,unsigned int k) { unsigned int i,j; float t1,t2,t3,t,a,b,c,d,tx,ty; *x=*(x+1);*(y)=*(y+1); *(x+n+1)=*(x+n);*(y+n+1)=*(y+n); t=0.5/k; setcolo_光滑曲线拟合(惩罚样条法)

Python 读取 csv 文件忽略引号中字段的逗号_写一句话到csv里 避免逗号分割-程序员宅基地

文章浏览阅读9.9k次。如题,使用 Python 处理 csv 文件,之前是这么处理的:str = '飞机,火车,汽车'rel = str.split(',')&gt; ['飞机','火车','汽车']一般情况下是正常的,但是如果在某个文本字段中带有逗号,处理就会有问题:str = “飞机,‘火车,book’,汽车"rel = str.split(',')&gt; ['飞机','火车','book','汽..._写一句话到csv里 避免逗号分割

GPS 和地理围栏实现微信小程序中马拉松全程追踪实战-程序员宅基地

文章浏览阅读1.1k次。本场 Chat 将围绕近年火爆的网红运动马拉松比赛场景,通过 IoT 物联网技术,你可以在微信小程序中实时追踪好友的马拉松全程轨迹,通过电子围栏技术划定终点范围,当朋友跑..._微信小程序通过gps显示轨迹

随便推点

谈 三层结构与MVC模式的区别-程序员宅基地

文章浏览阅读945次。转自:http://www.cnblogs.com/wisdomqq/archive/2009/04/29/1446579.html在CSDN和园子里有朋友谈到三层与MVC的区别,以前也有人抛出这个问题,本人对来公司面试的朋友也偶乐会提这方面的问题。 那么我也来讲讲我对这两者的理解吧。 首先对这个题目,本身是存在问题的,“XX结构”与“XX模式”的区别?请问中国社会

EKF SLAM学习笔记03-程序员宅基地

文章浏览阅读1.1w次。在上一节中我们看到的是扩展卡尔曼滤波在定位中的应用,EKF同样可以应用于SLAM问题中。在定位问题中,机器人接收到的观测值是其在二维空间中的x-y位置。如果机器人接收到的是跟周围环境有关的信息,例如机器人某时刻下距离某路标点的距离和角度,那么我们可以根据此时机器人自身位置的估计值,推测出该路标点在二维空间中的位置,将路标点的空间位置也作为待修正的状态量放入整个的状态向量中。_ekf slam

pytest文档46-关于https请求警告问题(InsecureRequestWarning: Unverified HTTPS request is being made)-程序员宅基地

文章浏览阅读672次。前言使用 pytest 执行 https 请求用例的时候,控制台会出现警告:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.当出现这个警告的时候,我们第一反应是加忽略警告:urllib3.disable_warnings(),然而并不管用。问题描述使用requests库发https请求,添加verify=False忽略

2020-07-23_什么是dvbbs6.0-程序员宅基地

文章浏览阅读69次。首先介绍下什么样的站点可以入侵:必须是动态的网站,比如asp、php、jsp 这种形式的站点。后缀为.htm的站点劝大家还是不要入侵了吧(入侵几率几乎为0)。  入侵介绍: 1、上传漏洞;2、暴库;3、注入;4、旁注;5、COOKIE诈骗。   1、上传漏洞   这个漏洞在DVBBS6.0时代被黑客们利用的最为猖獗,利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。   怎样利用:在网站的地址栏中网址后加上/upfile.asp如果显示“上传格式不正确[重新上传_什么是dvbbs6.0

关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误_asp.net http 错误 500.19 - internal server error <se-程序员宅基地

文章浏览阅读830次。关于IIS上运行ASP.NET Core 站点的“HTTP 500.19”错误昨天回答了博问中的一个问题 —— “HTTP 错误 500.19 - Internal Server Error dotnetcore”,今天在这篇随笔中时候事后诸葛亮地小结一下。服务器是 Windows Server 2008 R2 ,ASP.NET Core 版本是 2.1 ,错误信息如下:HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据_asp.net http 错误 500.19 - internal server error

BZOJ震波-程序员宅基地

文章浏览阅读290次。前言跟烁烁的游戏一模一样代码#include&lt;bits/stdc++.h&gt;#define LL long longusing namespace std;const int _ = 1e5+1e2;const int INF = 2e9;namespace zjy_io{ inline char gc(){ static char buf[...