ggplot笔记002——qplot()函数

qplot()函数

一年前就听说过ggplot,很多人都说ggplot强大,ggplot无所不能,从今天开始就让我们一起来见证一下这个神奇的R包。

首先要加载ggplot2:

1 if(!suppressWarnings(require(‘ggplot2‘))){
2   install.packages(‘ggplot2‘)
3   require(‘ggplot2‘)
4 }

先简单介绍一下diamonds数据集,diamonds数据集包含了约54000颗钻石的价格和质量信息。有

克拉重量(carat),切工(cut),颜色(color),净度(clarity)——反应钻石质量的四个‘C‘

深度(depth),钻面宽度(table),x , y, z——五个物理指标

但这个数据集没有经过很好的整理,在展示钻石一些有趣的关系时,会显示出一些质量问题。所以同时使用另一个数据集dsmall:它是一个容量为100的随机样本。

1 set.seed(1410)#让样本可重复
2 dsmall<-diamonds[sample(nrow(diamonds),100),]
3 dsmall[1:5,]

(一)qplot(quick 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:  分别表示横坐标的值和纵坐标的值,比如书上直接用carat代表的x,price代表的y...     为每个图层指定其他图形装饰属性,如颜色(colour)、形状(shape)、大小(size)等。                                     书上的colour=color,shape=cut,alpha=I(1/10)等data:  数据集,比如书上用的data=diamondsfacets:图形/数据的分面,按数据进行分类,每一类做成一个图形,效果一页多图,默认一个图形margins: 是否显示图形的边缘,默认不显示geom:  图形的几何类型,如    geom=‘point‘绘制散点图.设置了x和y时,默认为散点图    geom=‘smooth‘将拟合一条平滑曲线(基于loess,gam,lm,rlm),图形展示了曲线和标准误(不想会标准误,se=FALSE)    geom=‘boxplot‘可以绘制箱线胡须图,概括点的分布情况 x为属性变量,y为连续变量    geom=‘path‘geom=‘line‘绘制线条图    geom=‘histogram‘绘制直方图,若有x参数时,默认为直方图    geom=‘freqploy‘绘制频率多边形    geom=‘density‘绘制密度图    geom=‘bar‘绘制条形图stat:   将数据统计与图形结合 (stat-statistic简写)position:   调整图形位置xlim与ylim: 指定x轴和y轴的范围log:    横纵坐标对数转换main:    添加标题xlab与ylab:  添加x轴和y轴标签(二)例子钻石重量(carat)与价格(price)的散点图钻石重量(carat)与体积(x*y*z)的散点图钻石重量的对数【log(carat)】与价格的对数【log(price)】的散点图
1 qplot(carat,price,data = diamonds)
2 qplot(carat,x*y*z,data = diamonds)
3 qplot(log(carat),log(price),data = diamonds)

   

1 qplot(carat,price,data = dsmall,colour=color)#利用颜色分类
2 qplot(carat,price,data = dsmall,shape=cut)利用形状分类
3 qplot(carat,price,data = diamonds,alpha=I(1/10))
4 qplot(carat,price,data = diamonds,alpha=I(1/200))#alpha 越小越透明

参数调整:method和spanmethod=‘loess‘  默认平滑算法,平滑程度由span参数(从0【很不平滑】到1【很平滑】)控制。适用于数据小于1000method=‘gam‘    formula=y~s(x)基于mgcv包。对于大数据则用formula=y~s(x,bs=‘cs‘),这是数据量超1000时默认选项method=‘lm‘     formula=y~poly(x,2)或用formula=y~ns(x,2)基于splines包method=‘rlm‘    基于MASS包,使得结果对异常值不太敏感   
1 qplot(carat,price,data = dsmall,geom = c(‘point‘,‘smooth‘),
2       method=‘loess‘,span=0.3)#绘制散点图+平滑曲线
1 library(mgcv)
2 qplot(carat,price,data = diamonds,geom = c(‘point‘,‘smooth‘),
3       method=‘gam‘,formula = y ~ s(x),span=0.8)
4 qplot(carat,price,data = diamonds,geom = c(‘point‘,‘smooth‘),
5       method=‘gam‘,formula = y ~ s(x,bs=‘cs‘),span=0.2)
1 library(splines)
2 qplot(carat,price,data = dsmall,geom = c(‘point‘,‘smooth‘),
3       method=‘lm‘,formula=y~poly(x,2),span=0.5)
4 qplot(carat,price,data = dsmall,geom = c(‘point‘,‘smooth‘),
5       method=‘lm‘,formula=y~ns(x,5),span=1)
                                                                                                                                                                                                     

箱线图(geom=‘boxplot‘)和扰动点图(geom=‘jitter‘)箱线图,用colour控制外框线的颜色,用fill填充颜色,用size调节线的粗细                                                                       直方图和密度曲线图直方图:    binwidth参数通过设定组距来调节平滑度(切分位置同样可以通过参数breaks参数进行显示指定)密度曲线图:adjust参数控制了曲线的平滑程度(adjust取值越大,曲线越平滑)
1 qplot(carat,data = diamonds,geom = ‘histogram‘,binwidth=0.1,
2       xlim = c(0,3),fill=color)
3 qplot(carat,data = diamonds,geom = ‘density‘,binwidth=0.01,
4       xlim = c(0,5),fill=color)

条形图

1 qplot(color,data = diamonds,geom = ‘bar‘,weight=carat)+
2   scale_y_continuous(‘carat‘)

时间序列的线条图(将点从左到右进行连接)和路径图(按照点在数据集中的顺序对其进行连接)

1 a<-economics
2 a[1:5,]

1 qplot(date,unemploy/pop,data = economics,geom = ‘line‘)
2 #显示了失业率的变化
3 qplot(date,uempmed,data = economics,geom = ‘line‘)
4 #失业星期数的中位数


 
				
时间: 2024-10-18 16:15:34

ggplot笔记002——qplot()函数的相关文章

笔记3-2: read函数

read 函数: 调用read函数可以从打开的文件中读取数据. 原型: #include <unistd.h> ssize_t  read(int filedes, void* buf, size_t nbytes); 返回值:若成功则返回读取到的字节数,文件的偏移量将增加至实际读取的字节数,若到了文件末尾返回0,出错返回-1. 很多情况下,实际读取字节数少于要求的字节数,如下: 1.普通文件,在读取要求的字节数之前,已经到达文件尾端. 2.终端,通常一次最多读取一行.(有办法改变这一行为)

笔记3-3: write 函数

write 函数: 调用write函数可以从打开的文件中写数据. 原型: #include <unistd.h> ssize_t  write(int filedes, const void* buf, size_t nbytes); 返回值:若成功则返回读写入的字节数,返回值要与nbytes相同.如果返回值与nbytes不相同,表示写入出错. write出错的常见原因,一般是磁盘已满,或者超出进程的文件长度限制. 对于普通文件,write会在当前文件偏移量出开始写:如果在打开文件时,使用了O

C++学习笔记--从虚函数说开去

虚函数与纯虚函数: 虚函数:在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,virtual  函数返回类型  函数名(参数表){函数体;} ,实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数.注意虚函数在基类中是有定义的,即便定义是空. 纯虚函数:在基类中是没有定义的,必须由派生类重定义实现,否则不能由对象进行调用. 看下面的例子: #include<iostream> using namespace std; class Cshape { p

十四、Android学习笔记_Android回调函数触发的几种方式 广播 静态对象

一.通过广播方式: 1.比如登录.假如下面这个方法是外界调用的,那么怎样在LoginActivity里面执行登录操作,成功之后在回调listener接口呢?如果是平常的类,可以通过构造函数将监听类对象传入即可.但是在Activity中不能传递监听对象,所以考虑使用广播来实现. public void login(final LoginOnClickListener listener) { Intent intent = new Intent(context, LoginActivity.clas

C++学习笔记:指向函数的指针

1 #include <stdio.h> 2 3 int sum(int a, int b) 4 { 5 return a+b; 6 } 7 8 int minus(int a, int b) 9 { 10 return a-b; 11 } 12 13 int x(int a, int b) 14 { 15 return a*b; 16 } //第一个参数为指向函数的指针,返回类型为int,参数是int,int 1 void counting(int (*p)(int, int), int a

python学习笔记(03):函数

默认参数值:   只有在行参表末尾的哪些参数可以有默认参数值,即 def func(a, b=5 )#有效的 def func( a=5,b )#无效的 关键参数: #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) #输出: $ pyth

C++学习笔记之字符函数库cctype

C++从C语言继承了一个与字符相关的.非常方便的函数软件包,它可以简化诸如确定字符是否为大写字母.数字.标点符号等工作,这些函数原型是在头文件cctype(老式风格ctype.h)中定义的. 下表对这些函数进行了总结,有些系统可能没有表中列出的函数,也有可能还有在表中没有列出的一些函数. 函数名称 返回值 isalnum() 如果参数是字母数字,即字母或者数字,该函数返回true isalpha() 如果参数是字母,该函数返回true iscntrl() 如果参数是控制字符,该函数返回true

学习笔记之gethostbyaddr函数

刚才学了gethostbyname函数,这个gethostbyaddr函数的作用是通过一个IPv4的地址来获取主机信息,并放在hostent结构体中. #include <netdb.h> struct hostent * gethostbyaddr(const char * addr, socklen_t len, int family);//返回:若成功则为非空指针,若出错则为NULL且设置h_errno //上面的const char * 是UNP中的写法,而我在linux 2.6中看到

C++ Primer Plus学习笔记之虚函数

C++ Primer Plus学习笔记之虚函数 C++语言的多态性有两种类型:静态多态性和动态多态性.函数重载和运算符重载就是静态多态性的具体表现,而动态多态性是指程序运行过程中才动态的确定操作所针对的对象,它是通过虚函数实现的: 1,虚函数的概念: 一个指向基类的指针可用来指向从基类派生的任何对象,这样就可以达到一个接口多个实现的访问了:虚函数是在基类中被冠以virtual的成员函数,它提供了一种接口界面.虚函数可以在一个或者多个派生类中被重新定义,但要求在派生类中从新定义时,虚函数的函数原型