本文转自:http://www.cnblogs.com/lizhilei-123/p/6808370.html
标度控制着数据到图形属性的映射,当有需要时,ggplot2会自动添加一个默认的标度。我们确实可以在不了解标度运行原理的情况下画出许多图形,但理解标度并学会如何操纵它们则将赋予我们对图形更强的控制能力。
每一种图形属性都拥有一个默认的标度,此标度将在我们每次使用这个图形属性时被自动添加到图形中,这些标度列于下表中,默认属性粗体显示:
图形属性 |
离散型 |
连续型 |
颜色和填充色 |
brewer
grey
hue
identity
manual
|
gradient
gradient2
gradientn
|
位置 |
discrete |
continuous
date
|
形状 |
shape
identity
manual
|
|
线条类型 |
linetype
identity
manual
|
|
大小 |
identity
manual
|
size |
如果要添加一个不同的标度或修改默认标度的某些特征,我们必须构建一个新的标度,然后使用+将其添加到图形上。所有的标度构建器(scale)都拥有一套通用的命名方案,它们以scale_开头,接下来是图形属性的名称(例如:colour_,shape_,或x_)最后以标度的名称结尾(gradien、hue或manual)。比如scale_x_discrete().离散图形的颜色属性的默认标度名为scale_colour_hue(),填充色的Brewer配色标度名为scale_fill_brewer()。
1
2
3
|
> p <- qplot (sleep_total,sleep_cycle,data=msleep,colour=vore)
> p ##默认参数
> p + scale_colour_hue ( "what does\nit eat?" ,breaks= c ( "herbi" , "carni" , "omni" , NA ),labels= c ( "plants" , "meats" , "both" , "don't know" )) ##调整标度的参数
|
标度详解,可大致分为几组:
- 位置标度,用于将连续型、离散型和日期时间型变量映射到绘图区域,以及构造对应的坐标轴。
- 颜色标度,用于将连续型和离散型变量映射到颜色
- 手动标度,将离散型变量映射到我们选择的符号大小、线条类型、形状、或颜色
1.通用参数
以下参数对所有标度都通用:
- name:设置坐标轴或图例上出现的标签。可以使用三个辅助函数xlab(),ylab(),labs()可以让我们减少部门键入。
1
2
3
4
5
6
7
8
9
|
> p <- qplot (cty,hwy,data=mpg,colour=displ) ##默认标度下图左1
> p
> p + scale_x_continuous ( "City mpg" ) ##添加x标签 下图左2
> p + xlab ( "City mpg" ) ##添加x标签 与上相同
> p + ylab ( "Highway mpg" ) ##添加y标签
> p + labs (x= "City mpg" ,y = "Hightway mpg" ,colour = "Displacement" ) ##添加x、y及colour标度 下图左3
> p + xlab ( expression ( frac (miles,gallon))) ##x标度为表达式 下图右1
>
|
- limits:固定标度的定义域。连续型标度接受一个长度为2的数值型向量;离散型标度接受一个字符型向量。一旦设定limits,数据将不再进行任何训练。限制定义域可以帮助我们移除不想在图形上展示的数据,任何不在此范围内的数据将会被丢弃。
- breaks和labels:breaks控制着显示在坐标轴或图例上的值。labels指定了应在断点处显示的标签,若设定labels,则必须同时指定breaks。
1
2
3
4
5
6
7
8
|
> p <- qplot (cyl,wt,data=mtcars)
> p ##图第一行 (1,1)
> p + scale_x_continuous (breaks = c (5.5,6.5)) ##图第一行 (1,2)
> p + scale_x_continuous (limits = c (5.5,6.5)) ##图第一行 (1,3)
> p <- qplot (wt,cyl,data=mtcars,colour=cyl)
> p ##图第二行 (2,1)
> p + scale_colour_gradient (breaks= c (5.5,6.5)) ##图第二行 (2,2)
> p + scale_colour_gradient (limits= c (5.5,6.5)) ##图第三行 (2,3)
|
上图中第一列使用的是默认的breaks和limits,即limits=c(4,8)和breaks=4:8。中间一列重新设置了breaks:绘图区域不变,但刻度和标签的位置都被移动了。
最右列则重新定义了limits,相当多的数据落在了绘图区域之外。
2.位置标度
每幅图都一定拥有两个位置标度,水平位置和竖直位置。ggplot2提供了连续型、离散型以及日期型标度。
我们可以自行实施变换,比如我们可以直接绘制log10(x),而不去使用scale_x_log10().这两种做法将在绘图区域生成完全相同的结果,但是坐标轴和刻度标签却是不同的。
1
2
3
|
> qplot ( log10 (carat), log10 (price),data=diamonds) ##下图左
> qplot (carat,price,data=diamonds) + scale_x_log10 () + scale_y_log10 () ##下图右
>
|
上面的图形主体是相同的,但坐标轴上的标签是不同的。
日期和时间
日期和时间值基本上属于连续型,但在标注坐标轴时有着特殊的处理方式。目前我们仅支持属于date类的日期值和属于POSIXct类的时间值。如果你的日期和时间值是其他格式的,则需要as.Date()或as.POSIXct()对其进行转换。
有三个参数可以控制坐标轴外观和刻度的位置:major、minor、以及format。
- 参数major和minor用以按照时间的单位,即年月周日时分秒来指定主要和次要断点的位置,并且允许以这些单位的倍数出现,比如,major="2weeks"将在每隔两周的位置放置一个主刻度。如果
|
请发表评论