#R-ggplot#qplot笔记

ggplot系列1——qplot画图


Date:2013.9.29
Author:duqi.yc


1、Preface

最初选择R的理由之一,就是觉得它画图比较不错,简单美观,比起SAS各种地方调试,R更容> ?qplot易上手。这可能跟我有MATLAB基础有关系吧。
熟悉了plot,bar,boxplot等之后,突然发现了ggplot2,完全颠覆了对于画图的“价值观”——画图竟然也有一套图形语法,惊讶!
正所谓:天外有山,人外有人。看了Hadley Wickham的<>之后,领略了数据可视化的另一个世界。
掌握了一点ggplot2,日常的工作中顺手就开始“涂抹”了。可能是旧有的plot,bar,boxplot的思维作祟,每次用ggplot2来画图,很多细节问题都记不清楚,可能这个也是其他同学使用ggplot2觉得复杂的地方吧,每个地方都需要去单独的设置,从Mapping,scale等等。
还好,Hadley Wickham知道我们的难处,给了一个qplot(quick plot),类似plot,当作一个敲门砖。今天就总结下qplot的用法,不期望给其他同学有帮助,只祈求自己加深印象(ps:貌似很多东西不经过自己的咀嚼,总是不是自己的,汗!)

2、What's qplot?

qplot,是quick plot的简称。大部分人熟悉了plot,如果直接上手ggplot可能很多同学难受、不习惯,所以hadley Wickham给了一个类似plot的ggplot,可以当作一个定制版的ggplot。

?qplot

在help中就看到qplot的用法和参数说明,如下:

`Usage:

qplot(x, y = NULL, ..., data, facets = NULL, margins = FALSE, geom = "auto", stat = list(NULL), position = list(NULL), xlim = c(NA, NA), ylim = c(NA, NA), log = "", main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)`

传统plot的用法和参数,如下:
plot(x, y, type='l',col = NULL,xlab = NULL,ylab = null,xlim=c(NA,NA),ylim=c(NA,NA),main = NULL,sub = NULL,...)

从qplot和plot参数对比看,两个语法是不是很像,唯一不同的是

  • qplot可以通过facets参数来通过数据映射分组画图;
  • qplot还可以在里面通过stat添加统计线;
  • qplot还可以通过log对横纵座标直接数据变化。

所以使用qplot时候,该写x,y,main,xlab,ylab的地方跟plot一样;另,如果想添加stat统计曲线,或者想把不同的参数对应的数据分图看,可以用facets来分面。下面拿一个实例做个qplot的使用说明。

3、qplot画图实例

qplot(ds,pvuv,data = product.detail) #基础画图


qplot(ds,pvuv,data = product.detail,main = "qplot画图测试",xlab = "Date",ylab = "pvuv",colour = I("red")) # 加入标题和颜色


qplot(ds,pvuv,data = product.detail,main = "qplot画图测试",xlab = "Date",ylab = "pvuv",colour = I("red"),facets = . ~ bucket_test) # 分面,把不同的参数类型分开画图


qplot(ds,pvuv,data = product.detail,main = "qplot画图测试",xlab = "Date",ylab = "pvuv",colour = I("red"),facets = bucket_test ~ type) # 根据不同的参数分面可视化,现在能看到一些规律在图里面吧。

4、座标轴和图例处理

其实,单纯的ggplot画图还没觉得麻烦,就是遇到了不同类型的数据时候,横纵座标轴显示问题,特别纠结,不停的去查资料。就像上面的4个图,横座标的时间轴就看着很难看,是不?知其烦,把自己平时用了一些总结,放在这里:

  • 座标轴处理:scale_x_date(breaks = NULL,labels = date_format("%m%d"))

这个标度变换非常好用,breaks表示哪些元素可以在图形上显示,labels代表图形上显示什么,两个同时被使用。 同理scaleycontinus(labels = percent),作用是Y轴的元素以%的形式显示。当然,其他标度都可以对应设置,请参考P109。

  • 分面座标轴处理:facet_wrap( ~ type,nrow = 1,scales = "free")

这个是分面的一个参数,可以根据变量数据分面,scales = "free"(不同xy轴座标可不同)、“fixed"(不同分面xy座标相同)、"freex"(x标度可变y固定)、"freey"(y标度可变x固定),具体更详细见P129。哦对了,nrow表示分面要几行。

5、主题Theme

主题包括标题、座标轴标签、图例等文字的东西,也包括背景等颜色搭配。 我们日常用的较多就是背景和标题、图例了吧,见P151。可以通过 `+theme( )' 添加修改 ,尤其这个地方参数太多且复杂,不再多少说。


零碎写了一点,只为自己梳理下知识点。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章