如何使用 ggplot2包下载

打造“雷达图”(又名星级蜘蛛图)R中使用ggplot2
我想创建类似下面的一个plot:
我知道我的radarchart从函数fmsb包。我不知道ggplot2可以这样做,用极坐标?谢谢。
本文地址 :CodeGo.net/427523/
-------------------------------------------------------------------------------------------------------------------------
1. 这里是您连接到radarchart示例中的数据。
maxmin &- data.frame(
total = c(5,1),
phys = c(15,3),
psycho = c(3,0),
social = c(5,1),
env = c(5,1)
dat &- data.frame(
total = runif(3,1,5),
phys = rnorm(3,10,2),
psycho = c(0.5,NA,3),
social = runif(3,1,5),
env = c(5,2.5,4)
我们需要一点点的操纵,使它们适合于ggplot。
他们规范化,添加一个id列,并转换为长格式。
normalised_dat &- as.data.frame(mapply(
function(x, mm)
(x - mm[2]) / (mm[1] - mm[2])
normalised_dat$id &- factor(seq_len(nrow(normalised_dat)))
long_dat &- melt(normalised_dat, id.vars = "id")
ggplot还包装了值,以便在优先和最后一个了。我们的广告一个额外的factor水平,以避免这种情况。
levels(long_dat$variable) &- c(levels(long_dat$variable), "")
这里的plot。这是不太,但它应该让你开始的。
ggplot(long_dat, aes(x = variable, y = value, colour = id, group = id)) +
geom_line() +
coord_polar(theta = "x", direction = -1) +
scale_y_continuous(formatter = "percent")
请注意 CodeGo.net,当coord_polar中,线是弯曲的。如果你想直线,那么你就必须要尝试不同的技术。
如果你正在寻找一个非极坐标的版本,我觉得下面的函数将帮助:
###################################
##Radar Plot Code
##########################################
##Assumes d is in the form:
# seg meanAcc sdAcc meanAccz sdAccz meanSpd sdSpd cluster
# 388 -0.038 1.438 -0.571 0.832 -0.825 0.095
##where seg is the individual instance identifier
##cluster is the cluster membership
##and the variables from meanACC to sdSpd are used for the clustering
##and thus should be individual lines on the radar plot
radarFix = function(d){
##assuming the passed in data frame
##includes only variables you would like plotted and segment label
d$seg=as.factor(d$seg)
##find increment
angles = seq(from=0, to=2*pi, by=(2*pi)/(ncol(d)-2))
##create graph data frame
graphData= data.frame(seg="", x=0,y=0)
graphData=graphData[-1,]
for(i in levels(d$seg)){
segData= subset(d, seg==i)
for(j in c(2:(ncol(d)-1))){
##set minimum value such that it occurs at 0. (center the data at -3 sd)
segData[,j]= segData[,j]+3
graphData=rbind(graphData, data.frame(seg=i,
x=segData[,j]*cos(angles[j-1]),
y=segData[,j]*sin(angles[j-1])))
##completes the connection
graphData=rbind(graphData, data.frame(seg=i,
x=segData[,2]*cos(angles[1]),
y=segData[,2]*sin(angles[1])))
如果您是通过绘制或组可以执行以下操作:
radarData = ddply(clustData, .(cluster), radarFix)
ggplot(radarData, aes(x=x, y=y, group=seg))+
geom_path(alpha=0.5,colour="black")+
geom_point(alpha=0.2, colour="blue")+
facet_wrap(~cluster)
这应该与下面的数据样本:
seg meanAccVs sdAccVs meanSpd sdSpd cluster
0.433 -0.801 0.083
0.292 1.047 0.000
0.221 0.068 0.053
0.214 -0.588 0.056
1.041 -1.039 0.108
1.552 -0.339 0.057
0.250 -1.009 0.088
0.469 -0.035 0.078
1.017 -0.940 0.138
1.289 -0.477 0.301
本文标题 :打造“雷达图”(又名星级蜘蛛图)R中使用ggplot2
本文地址 :CodeGo.net/427523/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联&系& c&o&d&e&g&o &@&1&2&6&.&c&o&m如何使用 ggplot2_百度知道
如何使用 ggplot2
提问者采纳
一类是geom_。这种设计相当地棒:p + geom_point(color = &quot,要设置成“point”, aes(x = x。我们来实践一下吧,我们再来分析一下把color = &quot..)}&lt.,为了写到里面,其实它们是ggplot2每一个图层绘制都必须有的,需要逐个指定的参数都必须写在aes里,有个问题。这样做的缺点就是;---- code 1p + geom_point(aes(colour = qsec)) #&lt,也可不指定。不谈底层的实现思想:直译为标尺.667%.;再绘制第二点?aes实际上做的是将aes里的向量的顺序逐个地绘制;))首先,就是,而选择将整个图层染成一种颜色;,qsec为numeric变量,绘图速度较慢,而不是分组染色?为什么说任何与数据向量顺序相关;green&quot:调整坐标,希望对大家有用,0,以上代码就可以得到下面这张图,plot:初始化.08 3,为什么要重复;identity&quot。在这一步里; head(mtcars)
mpg cyl disp
qsec vs am gear carbMazda RX4
21;)),即aes。ggplot2里的所有函数可以分为以下几类?bingo。darkred&quot,而不需要在考虑数据的时候还要关注到与数据无关的美学参数,就找scale_x_然后后面跟上你的横坐标类型,竟然一样,因此希望大家留心,以上这幅图用的是geom_point里的一个参数:任何与数据向量顺序相关,还长得一模一样,但是要在申明中标注data = NULL,因为(20,mean_等)初始化:ggplot2&gt,包括background和title);environment。微调图型?什么时候color,因此我们理论上看到的点其实是最后一次画的那个点。这里的调整主要是使用微调图形这大类的函数做美学特征,例如:好了;) 哦.1)得到如下图:往往是二维或一维变量:包括rug图,20)这个点出现频率为20&#47,还是&quot,然出来的是粉色, y = ))data就是载入你要画的数据所在的数据框,而不是再用stat_sum.,来做个比较,5), aes(x = x, y = y)) +
geom_point(color = &quot.90 2。什么,因子水平是1;.;- ggplot(data = 。我们来举个例子,而是在做局部调整,数据美学与数据无关的调整分开:ggplot(data= NULL,具有width属性带(ribbon,这使得有时候再处理的时候就会产生一些困惑、title),不过我会在后面更仔细地叙述ggplot2是怎么看分组数据的绘图的,这也表示二次开发的可能性不高++++++++++++++++++++++++++++++++++++++++++++++++++++++++以上是使用的心得?怎么都是蛋蛋的粉红色,由于(20,以plot开始.15 3;- x + rnorm(100;- ggplot(mtcars.,
position = position,ymax。这是在ggplot2初学者眼里最不能理解的东西!现在开始染色了、选择数据以及选择默认aes,有shape但没有fill线(line:ggplot(data= NULL,我们简单地理解.、绘图主题的调整,有时要用scale_, aes(x = x,20)这个点被画了20次。其次.02
18,我们可以发现了。首先。第四步.、alpha)调整有关的函数;一类是stat_,如果不需要指定这么一个染色的顺序,或者说两个步骤(其实还包括position)。这样说不是不对。code 2,不非常恰当的解释,比如?ggplot就先把他展开成了factor(rep(&quot。这是错的;再染第二个, data = data, aes(x = x,在做参数修改的时候:第一;green&green&quot,1),geom = &quot. 绘图第一步.0
160 110 3,这是一回事吗;- x + rnorm(100,说白了就是载入数据空间,x =13 ;green&quot,这个其实与数据处理无关,其实就是按照美学特征的名字来.440 17。优势其实也有;- c(rnorm(100.。我们做一个简单的,自带的plotmath公式无法满足很多需求无法针对多个legends进行调整效率不高.76 3,我们往往可以很方便地直接用一句单独的命令修改,stat = &quot。其他的美学特征其实也是完全一致的,然后再有最小的单元图层,不然就会得到不必要的报错,按照以上的推理,其颜色变量是&quot:ggplot2的核心理念是将绘图与数据分离;)做出的图如下,那就放到aes里,任何一个ggplot2图层都包括stat和geom俩部分.) + coord_XXX(,hline,abline. ggplot2的一些缺点公式支持不好, y = y)) +
geom_point(color = &quot:我们可以发现。而ggplot2则意味着要重新作图;- c(rnorm(100,element_line调整主题内的所有线、坐标轴,下面来理解ggplot2里的绘图命令,作者的设计思路是要将数据处理与数据美学分开;- rnorm(100。于是,stat_function等),我们调整一下透明度到10%.215 19。 而stat_identity则表示不做任何的统计变换,现在问题就来了.22
1code 1,这三类就是实现一个函数一个图层的核心函数;darkred&quot,还真可以。当然,并且已经有一个与x;x[1] == x[2]&quot,什么时候要写在aes外,只是很不恰当、fill。再来看ggplot2的代码,值得褒奖的是,我要按照这个向量来分别染色:p &,但由于没做统计转换(20。譬如以下代码(转自geom_point帮助文档中的实例), rect),现在我们初始化的时候..,这就是与aes内的各种美学(shape:透明是特征是透明的fill补,xmin:严格意义上说,实际上都是以一句单独的命令来实现的.rm = na。第二个是重头戏;green&quot,nrow(mtcars)).) {
GeomPoint$new(mapping = mapping,染成蛋蛋的粉红色,errorbarh)然后。然后,5) + rnorm(100。所有注释的实现都是通过annotate函数实现的。4.8
93 3;调整的是横坐标标尺,geom_。然后开始绘制,越后面其图层越高:往往只有x;写到了aes里, text),这一类函数不是再实现图层.:最大的是plot(指整张图;,其属性按照geom的不同而发生变化,里面还有个参数geom。啊第一个数据mtcars$mpg[1],因此. ggplot2图层以及其他函数的分类好了,aes到底是什么,怪不得写在aes里染出来的颜色不是绿色,怎么办:&darkred&quot,rep(20?为什么stat_bin和geom_histgram画出来的图是一样, aes(x =?事实上。3,因此,title和stick), data = NULL,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图)。在这一步之中: ggplot首先载入了这个mtcars的集合:这样应该就很明显了,14。好了。2,发现没有叫&quot,很多人就会问出一些问题;darkred&quot。其次就是对于分组数据的处理!这个问题相当好,print等)按变量组图(facet_等)真正的绘图命令(stat_.) #添加注释画出的结果如下,一个单纯的geom_point里面也是带有stat_的:ggplot(data= NULL,最好只是把关于位置的x和y指定一下就好。由此;point&quot,可以以任何方式结束,咦,应该选择连续型的标尺、mtcars$wt[1],细的叫grid,觉得不满意就可以写命令直接调整, aes(wt.44
1Hornet Sportabout 18,rep(20,有时又要用 geom_pointfunction (mapping = NULL,smooth),即不做任何统计变换,我们没有一个停止绘图的标志;text&quot、size,20)这个点的数据事实上是有20个的:element_text调整字体;,
label = &quot:#这是基于graphic包里例子x &lt.,5) y &lt,解释一下.major.。scale_。只是需要解释group=1的意思就是说不做分组来进行绘图、legend(包括backgroud.620 16.)5;:特征是指定位置有xend和yend, stat = &quot.85 2,什么时候写里面, ,统计变换用的,我在(20,调整、y长度一致的分组变量了:x &的.,0. +
scale_XXX(,5)y &green&quot,其实这方面,应该存在一种以stat_sum作为主函数的方法来绘制这幅图,element_blank清空;green&quot,它一次只添加一个位置上的图形(可以通过设置向量来实现同时绘制多个图形,因为color放到了aes里,我在此作了修改.。譬如说,这部分内容的熟悉程度直接影响到对于theme的掌握。其次:这类一般有---- code 2结果是,那照我的说法。如何搜索你要用什么美学特征调整函数。有人有时候会觉得ggplot2很奇怪的地方就是为什么调整legend的时候,误差棒(errorbar,但这个理念和注释的理念有所偏差),如fortify_,parse = T,就是按照你的需要一步步加图层了(使用“+”),然后指定给了mpg作为其x坐标位置,大家可以比较tapply函数的写法:调整不与数据有关的图的元素的函数、mtcars$wt[1]。这个与其他命令式的绘图完全不同,vline,ggplot图的元素可以主要可以概括如下:我们查看码源,而事实上,其实geom_和stat_实际上是一回事.。可能你会问了,ggplot2绘图有两种函数.. ggplot2的要素我们这里不谈qplot(quickly plotting)方法,想分成不同组调整.) + theme(,单纯谈ggplot方法, mpg)) #&lt,我们也要回到我们在第一步时出现的问题;darkred&quot,这个向量长度为1。,wt为y坐标位置.。coord_。p + geom_point(aes(colour = &quot,哦,其实annotate就是一个最简单的geom_单元,
na。这部分也就是继承了命令式作图的思想。,现在把这些理念的东西讲完了之后.) + guides(;)尼玛、color.7
360 175 3,其次是axis(包括stick.rm = FALSE,你要调整的是fill,0.0
160 110 3,这种分离就会使得我们可以如此流程化地操作作图?好了;大家可以发现、y指定位置, y = y)) +
geom_point(color = &quot?那就记着想统一整个图层时就放到aes外,但为什么写到里面就不可以了,数据的初始化跟上面那个例子是相同的;sum&quot。通过举了这个染色的例子大家应该都弄懂了:调整所有的text.61
1Hornet 4 Drive
21.320 18. +
annotate(,的确.。ggplot2风格的绘图的第一步就是初始化,14,绘制图层;其他雷同,确定位置;)好了, position = &quot,绘图用的,指定为你的绘图环境、boder和网格线grid、facet这是第二层次,什么时候要把参数写在aes里,读取mtcars$mpg[1].frame之中的向量, 。p &lt. + stat_XXX(,加注释;) +
annotate(&quot,其中粗的叫grid,就知道geom_point的默认stat是identity、ggplot2的逻辑,也没有,。大致见下图,histogram):用于运算(我们在此不讲,y)text(13、text,20)) y &lt: namespace。很多人在解释ggplot2的时候喜欢说..02
4Datsun 710
22:我们可以看到这种绘图方式实际上是按命令添加的?还是搞不清该放aes里面还是外面,ymin指定位置棒(boxplot、shape,为了更直观,然后又找了global,每加上一个元素,如果你的数据都是向量,使ggplot2的灵活性增加,于是ggplot开始搜索mtcars里面的向量了?其实很简单:一般是基于函数来处理位置射(segment),lattice已经做得很好了。==================================================================1,就是这个蛋蛋的粉红色。我想为所有点的颜色都染成绿色, na,到底发生了什么,需要逐个指定的参数都必须写在aes里,annotate).1
225 105 2,levels = unique(&quot..,搞不好:我们来分析一下ggplot2是怎么作图的,甚至很多老手也会在犹豫,数据相关的绘图与数据无关的绘图分离ggplot2是按图层作图ggplot2保有命令式作图的调整函数。可能这不够直观,其中facet可以分为外部strip部分(包括backgroud和text)和内部panel部分(包括backgroud, y = y)) + #开始绘图geom_point(color = &120=16。第三部,是美学(aesthetic)的缩写.) + ,20)点被画了20次,为什么可以用来画图.,其实不符合人对于画图的一般认识,14: 指定了qsec作为其染色的标准(分组).875 17:&gt,我们来看一下mtcars这个数据集长什么样,图层之间的叠加是靠“+”号实现的, y = )) +
geom_XXX(.,譬如对于x轴的调整:点(point.) + 。等等;.4
258 110 3,是一个图层的一体两面,因此;green&;- rnorm(100,alpha = 0, stat = stat,没关系,还是上面的代码、标题.,ggplot的绘图有以下几个特点。因此,怎么办;其二,因子水平也是1,载入之后,统计变换竟然是做运算用的,stat_sum实际的意思就是按照某一点占所有点出现频率然后换算成大小来作图,就找scale_fill_之后就有一些不同的染色方法(关于色彩.90 2,1) ggplot(data= NULL,其实这都是对于ggplot2这个设计理念的不理解.) + .46
4Mazda RX4 Wag
21。annotate的geom就是指定注释的类型,或者panel的底色.460 20, aes(x = ,然后为其染成mtcars$qsec[1]颜色, y = 20, expression(x[1] == x[2]))输出的图是这样的. 终于完成了。第二部:ggplot(data = 。我们现在就使用坐标转换来重新画这个图, aes(x = ,1)plot(x,element_rect调整所有的块,表示射线方向面(tile,如果有时间还会添加相关知识),bin。现在就讲通了,就可以免去写大量的$来提取data.minor)。guides,ggplot就开始把它认作了一个新的向量,对于有过经验的同学现在应该重新修正这个观点——stat_和geom_是两种绘图方法。这之后我们会进一步解释,一个极具诚意的作图应该长成下面这个样子、fill写外面。ggplot2的逻辑在我看来其实是真正实现了一个图层叠加的概念,20,14,还要要说的就是我们要讲的是ggplot2大致内置了哪些图,theme函数采用了四个简单地函数来调整所有的主题特征,text, y = y)) +
stat_sum(color = &quot,则只需要将color写在aes外,aes到底在干什么了,aes里的美学特征其实就是按照向量顺序指定每个位置的美学特征总结来说有以下几点。主要是在理念上解释一些容易产生困惑的问题,所以透明度会叠加为20*10% = 200%实际只展现100%:一句语句代表一张图;identity&quot。在调整主题这方面、展示绘图等命令(ggplot,染成默认调色第一种,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中,我们要改变x轴的颜色:x &lt,bar,theme函数其实最妙的地方是将对于数据相关的美学调整和与数据无关的美学调整分离了,20))ggplot(data= NULL
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ggplot2作图详解1:入门函数qplot
14:33:53&&&来源:[]&&&评论:&&
[ggplot2作图详解1:入门函数qplot]文章目录
1 qplot函数参数
2 qplot做散点图
3qplot做曲线图
4 qplot做统计图
5 qplot做柱形图
6 SessionInfoggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创造出…… [关键词:作图 柱形图 散点图 因子 原始数据 平均值 直方图]…
1 qplot函数参数
2 qplot做散点图
3qplot做曲线图
4 qplot做统计图
5 qplot做柱形图
6 SessionInfo
ggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创造出任何有助于解决你所遇到问题的图形。一点也不谦虚。H.W.还说了另外一句话,“学习ggplot2你得忘记一些东西”,所以也有人说ggplot2是作图软件中的太极功。有点高深。
那好吧,我就怀着无比崇敬的心情来学一学这太极图法。先安装软件包:
install.packages("ggplot2")
1 qplot函数参数
Hadley Wickham同学很善解人意,知道我们接受一种新事物不会太容易,所以设计了个qplot函数。qplot 即“快速作图”(quick plot),顾名思义,能快速对数据进行可视化分析。它的用法和R base包的plot函数很相似,主要作用是让读者/用户在不知不觉中洗脑。先看看它的参数:
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)
x, y: 意义明确,不用说了
data: 这个可以有,为数据框(data.frame)类型;如果有这个参数,那么x,y的名称必需对应数据框中某列变量的名称
facets: 图形/数据的分面。这是ggplot2作图比较特殊的一个概念,它把数据按某种规则进行分类,每一类数据做一个图形,所以最终效果就是一页多图
margins: 是否显示边界
geom: 图形的几何类型(geometry),这又是ggplot2的作图概念。ggplot2用几何类型表示图形类别,比如point表示散点图、line表示曲线图、bar表示柱形图等。
stat: 统计类型(statistics),这个更加特殊。直接将数据统计和图形结合,这是ggplot2强大和受欢迎的原因之一。
position: 图形或者数据的位置调整,这不算太特殊,但对于图形但外观很重要
xlim, ylim, xlab, ylab, asp: 初步可以按照plot函数的相应参数来理解
作为入门的第一节,下面主要讲data和geom参数。
2 qplot做散点图
2.1?使用向量数据
和plot函数一样,如果不指定图形的类型,qplot默认做出散点图。对于给定的x和y向量做散点图,qplot用法也和plot函数差不多:
library(ggplot2)
x &- 1:1000
y &- rnorm(1000)
plot(x, y, main="Scatter plot by plot()")
qplot(x,y, main="Scatter plot by qplot()")
2.2?使用数据框数据
虽然可以直接使用向量数据,但ggplot2更倾向于使用数据框类型的数据作图。使用数据框有几个好处:数据框可以用来存储数值、字符串、因子等不同类型等数据;把数据放在同一个R数据框对象中可以避免使用过程中数据关系的混乱;数据外观的整理和转换方便。ggplot2中使用数据框作图的最直接的一个效果就是:你可以直接用数据的分类特性(数据框中的列变量)来决定图形元素的外观,这个过程在ggplot2中称为映射(mapping),是自动的。
在演示使用数据框作图的好处之前我们先了解以下ggplot2提供的一组有关钻石的示范数据 diamonds:
str(diamonds)
## "data.frame": 53940 obs. of
10 variables:
0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
: Ord.factor w/ 5 levels "Fair"&"Good"&..: 5 4 2 4 2 3 3 3 1 3 ...
: Ord.factor w/ 7 levels "D"&"E"&"F"&"G"&..: 2 2 2 6 7 7 6 5 2 5 ...
$ clarity: Ord.factor w/ 8 levels "I1"&"SI2"&"SI1"&..: 2 3 5 4 2 6 7 3 4 5 ...
61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
55 61 65 58 58 57 57 55 61 61 ...
326 326 327 334 335 336 336 337 337 338 ...
3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
可以看到这是数据框(data.frame)类型,有10个变量(列),每个变量有53940个测量值(行)。第一列为钻石的克拉数(carat),为数字型数据;第二列为钻石的切工好坏(cut),为因子类型数据,有5个水平;第三列为钻石颜色(color),为7水平的因子;后面还有其他数据。由于数据太多,我们只取前7列的100个随机观测值。数据基本就是我们平时记录原始数据的样式:
set.seed(1000) # 设置随机种子,使随机取样具有可重复性
datax&- diamonds[sample(5), seq(1,7)]
head(datax, 4)
cut color clarity depth table price
## 1 Ideal
## 4 Ideal
## 3 Ideal
如果要做钻石克拉和价格关系的曲线图,用plot和qplot函数都差不多:
plot(x=datax$carat, y=datax$price, xlab="Carat", ylab="Price", main="plot function")
qplot(x=carat, y=price, data=datax, xlab="Carat", ylab="Price", main="qplot function")
但如果要按切工进行分类作图,plot函数的处理就复杂了,你首先得将数据进行分类提取,然后再一个个作图。虽然可以用循环完成,但作图后图标的添加还得非常小心,你得自己保证数据和图形外观之间的对应关系:
plot(x=datax$carat, y=datax$price, xlab="Carat", ylab="Price", main="plot function", type="n")
cut.levels &- levels(datax$cut)
cut.n &- length(cut.levels)
for(i in seq(1,cut.n)){
subdatax &- datax[datax$cut==cut.levels[i], ]
points(x=subdatax$carat, y=subdatax$price, col=i, pch=i)
legend("topleft", legend=cut.levels, col=seq(1,cut.n), pch=seq(1,cut.n), box.col="transparent", cex=0.8)
但用ggplot2作图你需要考虑数据分类和图形元素方面的问题就很少,你只要告诉它用做分类的数据就可以了:
qplot(x=carat, y=price, data=datax, color=cut, shape=cut, main="qplot function")
如果不喜欢它默认的图形背景,要改变也相当简单,ggplot2预置了几个模板,这些内容我们在后面再详细说:
theme_set(theme_bw())
qplot(x=carat, y=price, data=datax, color=cut, shape=cut, main="qplot function")
数据框可以存储不同的数据,而这些数据是有类型差别的。ggplot2作图对各类数据的要求也非常严格,用于分类的数据必需是因子类型,否则就出错,例如下面的语句就会出错:
qplot(x=carat, y=price, data=datax, shape=depth)
## Error: A continuous variable can not be mapped to shape
3qplot做曲线图
和plot函数一样,qplot也可以通过设置合适的参数产生曲线图,这个参数就是geom(几何类型)。图形的组合非常直接,组合表示几何类型的向量即可:
qplot(x=carat, y=price, data=datax, color=cut, geom="line", main="geom=\"line\"")
qplot(x=carat, y=price, data=datax, color=cut, geom=c("line", "point"), main="geom=c(\"line\", \"point\")")
4 qplot做统计图
qplot是名副其实的qplot(quick plot)函数,通过改变几何类型geom参数的值你可以获得各种图形。geom参数可以设置的值和意义是:
point:散点图
line:曲线图
smooth:平滑曲线
jitter:另一种散点图
boxplot:箱线图
histogram:直方图
density:密度分布图
bar:柱状图
前两种我们看过了,bar类型下面另讲,jitter以后有机会再说,看看其他4种类型:
qplot(carat, price, data = diamonds, color=cut, geom = "smooth", main = "smooth")
qplot(cut, price, data = diamonds, fill=cut, geom = "boxplot", main = "boxplot")
qplot(price, data = diamonds, fill=cut, geom = "histogram", main = "histogram")
qplot(price, data = diamonds, color=cut, geom = "density", main = "density")
能做什么样的图形取决于数据,这点我们都很清楚,所以不同类型的图使用的数据有所不同,参数也有变化。前面我们说ggplot2可以整合不同类型的图形到一个图中,但很重要的一个前提是要组合的这些形状要能共享一组数据和参数。道理很简单,如果某人绞尽脑汁把散点图和密度分布图融合在一个图中展示,不出一周他就要住进精神病院。
qplot(price, data = diamonds, color=cut, geom = c("point", "density"))
## Error: geom_point requires the following missing aesthetics: y
5 qplot做柱形图
做柱形图很少直接用原始数据,一般都要通过计算变换如求平均值后再做。这其实是一个统计过程,所以多数柱形图应该也是统计类型的图。ggplot2对柱形图的处理体现了这一思想:柱形图是一种特殊的直方图。所以ggplot2可以直接用原始数据做出柱形图,这是它的优点之一。下面按钻石切工对价格求平均值后做柱形图:
qplot(x=cut, y=price, data = diamonds, fill=cut, geom = "histogram",
stat="summary", fun.y="mean")
stat参数表示统计的类型,而fun.y则表示应用于统计的函数。把geom参数值换成bar得到相同的图形:
qplot(x=cut, y=price, data = diamonds, fill=cut, geom = "bar",
stat="summary", fun.y="mean")
如果不嫌麻烦,可以先计算出平均值再柱形图也没什么问题。引物bar图形的本质是统计图形,所以得设置stat参数为identity,即不做统计:
(mean.price &- with(diamonds, aggregate(price~cut, FUN=mean)))
## 3 Very Good
qplot(x=cut, y=price, data=mean.price, fill=cut, geom="bar", stat="identity")
通过学习上面的简单例子可能会有点收获:了解了ggplot2的qplot函数能用什么样的数据做什么图,知道一点关于ggplot2几何类型和统计类型的概念,如何从传统的R语言作图中转过脑筋来。但也仅此而已。ggplot2作图是基于图层的,从上面qplot函数的使用例子中显然看不出来,除此外还有很多深层次的概念、理论和函数。
6 SessionInfo
sessionInfo()
## R version 3.1.0 ()
## Platform: x86_64-pc-linux-gnu (64-bit)
## locale:
[1] LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC=C
[3] LC_TIME=zh_CN.UTF-8
LC_COLLATE=zh_CN.UTF-8
[5] LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
[7] LC_PAPER=zh_CN.UTF-8
[9] LC_ADDRESS=C
LC_TELEPHONE=C
## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C
## attached base packages:
## [1] tcltk
grDevices utils
## [8] base
## other attached packages:
## [1] mgcv_1.7-29
nlme_3.1-117
ggplot2_0.9.3.1 zblog_0.1.0
## [5] knitr_1.5
## loaded via a namespace (and not attached):
[1] colorspace_1.2-4 digest_0.6.4
evaluate_0.5.3
formatR_0.10
[5] grid_3.1.0
gtable_0.1.2
labeling_0.2
[9] lattice_0.20-29
MASS_7.3-31
Matrix_1.1-3
munsell_0.4.2
## [13] plyr_1.8.1
proto_0.3-10
Rcpp_0.11.1
reshape2_1.2.2
## [17] scales_0.2.4
stringr_0.6.2
tools_3.1.0
原文来自:http://blog.csdn.net/u/article/details/
将本文分享到下面的网站:
相关热词搜索:
[ggplot2作图详解1:入门函数qplot]延伸阅读:
频道总排行
频道本月排行

我要回帖

更多关于 ggplot2 软件下载 的文章

 

随机推荐