R:ggplot2(15),第6章 标度、坐标轴和图例(3)

《ggplot2:数据分析与图形艺术》

第6章 标度、坐标轴和图例

6.4 标度详解

6.4.4 手动离散型标度

离散型标度scale_linetype(),scale_size_discrete()和scale_shape()没有选项,这些标度是按一定的顺序将因子的水平映射到一系列取值中。
手动型标度创建新的标度:
scale_shape_manual(),scale_linetype_manual(),scale_colour_manual()等。手动型标度拥有一个重要参数values,指定这个标度应该生产的值。如果这个向量中的元素是有名称的,则它将自动匹配输入和输出的值,否则它将按照离散型变量中水平的先后次序进行匹配。
> library(ggplot2)
> plot <- qplot(brainwt, bodywt, data=msleep, log="xy")
> plot + aes(colour=vore) + scale_colour_manual(values=c("red","orange","yellow","green","blue"))#分别给carni,herbi,insecti,omni着色,而NA则没有着色。
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第1张图片
> colours <- c(carni="red", "NA"="orange", insecti="yellow", herbi="green", omni="blue")#用colours将对应的颜色标记好,也可以绘图,但是NA值没有标记上颜色
> plot + aes(colour=vore) + scale_colour_manual(values=colours)
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第2张图片
> plot + aes(shape=vore) + scale_shape_manual(values=c(1, 2, 6, 0, 23))#变换不同的形状
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第3张图片
如果想在同一幅图上展示多个变量并显示一个有用的图例,下例展示scale_colour_manual()在这种情况下的创意用法。
在多数其他的图形系统中,你只需像下图一样把线上色,然后添加一个图例说明哪种颜色对应着哪个变量就可以了。这对于ggplot2不适用,因为图例是由标度负责绘制的,但标度并不知道要为线条添加何种标签。例如:
> huron <- data.frame(year=1875:1972, level=LakeHuron)#设定数据
> ggplot(huron, aes(year)) + geom_line(aes(y=level-5), colour="blue") + geom_line(aes(y=level+5), colour="red")#绘制两条线,蓝色和红色,但是没有图例
> ggplot(huron, aes(year)) + geom_line(aes(y=level-5, colour="blue")) + geom_line(aes(y=level+5, colour="red"))#虽然有图例,但是图例说明不对,而且颜色也不对
> ggplot(huron, aes(year)) + geom_line(aes(y=level-5, colour="below")) + geom_line(aes(y=level+5, colour="above")) + scale_colour_manual("Direction", values=c("below"="blue", "above"="red"))#两条线用colour将"below"和"above"作为因子,利用scale_colour_manual函数的values对geom_line中对应对因子进行values对颜色标记,而"Direction"作为图例的名称。
scale_colour_manual("Direction", values=c("below"="blue", "above"="red"))
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第4张图片

6.4.5 同一标度

如果数据的数据空间和图形属性空间相同时,可以使用同一型标度(indentity scale)。所以该数据无法从其本身派生出有意义的图例。如果想加入图例,也可以用参数breaks和labels自行设定。

6.5 图例和坐标轴

坐标轴和坐标被共同称为引导元素,它们都是标度的逆函数。
图例和坐标轴存在着天然的可比性:图例标题(legend title)和坐标轴名(axis label)是等价的,并且都由标度的名称参数(name)决定;图例标示(legend key)和刻度标签(tick label)皆由标度的断点参数(break)决定。
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第5张图片
在ggplot2中,图例和坐标轴可根据你在图形中使用的标度和几何对象自动生成。无法自行添加图例,但图例是可以进行调整的。
要绘制图例,图形必须收集每一种图形属性的使用信息:为何种数据以及何种几何对象。例如:你使用了点这个几何对象,在图例中得到点;所以得到线,点线以及条形都是这个道理。
当一个变量对应了多个图形属性时,ggplot2可以通过合并图例的办法来达到精简的目的。
例如颜色和形状都被映射到相同都变量,则用一个图例就够了。
图例和坐标轴的内容是由标度控制的,而渲染的细节是由主题系统控制的。

图例位置

图例的位置和对齐是使用主题设置legend.position来控制的,其值可为right、left、top、bottom、none(不加图例),或是一个表示位置的数值。这个数值型位置由legend.justification给定的相对边角位置表示(取0和1之间的值),它是一个长度为2的数值型向量:右上角为c(1,1),左下角为c(0,0)。
R:ggplot2(15),第6章 标度、坐标轴和图例(3)_第6张图片
Legend()
参考
https://blog.csdn.net/xiangyong58/article/details/54579293

qplot(brainwt, bodywt, data=msleep, log=“xy”) + aes(colour=vore) + scale_colour_manual(values=c(“red”,“orange”,“yellow”,“green”,“blue”)) + theme(legend.position=“bottom”)
加入theme(legend.position=“bottom”)可将图例放置在图形的下方。

你可能感兴趣的:(R,R_ggplot)