R语言ggplot2包之坐标轴详解
引言
我们还可以对图形中的坐标轴进行处理,包括x、y轴对换、设定坐标轴范围、刻度线修改与去除等等。要想对图形玩得转,坐标轴处理精通不可或缺。
坐标轴对换
我们使用coord_flip()函数来对换坐标轴。
library(ggplot2) library(gcookbook) ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + coord_flip()
置换x、y轴时有时候会导致某一坐标轴的坐标被逆转。比如说原x轴的数据是从左往右阅读的,在对换后,原来数据会从下往上给呈现。有时这是个问题。如果x是因子,我们可以对其用带参数limits=rev(levels(…))的函数scale_x_discrete()进行修正。
如果是连续变量,我们可以使用函数scale_y_reverse 或者scale_x_reverse来逆转坐标轴。
如果我们想改变分类变量的显示顺序,可以设置scale_x_discrete() or scale_y_discrete()函数就行。
#因子坐标轴 ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + coord_flip() + scale_x_discrete(limits=rev(levels(PlantGrowth$group))) #连续变量的逆转 ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + scale_y_reverse() #改变分类变量顺序 ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot()+scale_x_discrete(limits=c("trt1","ctrl","trt2"))
设置x,y轴的连续变量范围
我们可以使用xlim()和ylim设置x、y轴的最大最小值。
p <- ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() p + ylim(0, max(PlantGrowth$weight)) #ylim()是对scale_y_continuous()的快速实现。 #其中breaks用来控制刻度。 p + scale_y_continuous(limits=c(0, 10), breaks=NULL)
设置x、y轴刻度相对比例
我们可以设置x、y轴刻度的相对比例,可以是1:1,即一致的长度。也可以让其中一个轴的刻度变得更长一些,或者说两个刻度线之间的距离更大一些。
sp <- ggplot(marathon, aes(x=Half,y=Full)) + geom_point() #1:1 sp + coord_fixed() + scale_y_continuous(breaks=seq(0, 420, 30)) + scale_x_continuous(breaks=seq(0, 420, 30)) #1:2 x轴刻度长度比y轴刻度长度 sp + coord_fixed(ratio=1/2) + scale_y_continuous(breaks=seq(0, 420, 30)) + scale_x_continuous(breaks=seq(0, 420, 15))
设置刻度线的位置
ggplot()函数对处理刻度线位置非常擅长,只要改变刻度的间隔即可(这里的刻度线指的是大刻度线)。
如果坐标轴上变量是连续变量,则不会出现小刻度线。
#连续变量 ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + scale_y_continuous(breaks=c(4, 4.25, 4.5, 5, 6, 8)) #看到没有,刻度线位置已经按照breaks设置的参数改变了 #如果是离散变量,则使用scale_x_discrete函数 #通过limit函数来控制标签的个数和顺序 ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + scale_x_discrete(limits=c("trt2", "ctrl"))
去除刻度线、刻度标签和网格线
如果想去除刻度标签,我们使用theme(axis.text.y = element_blank())(如果针对x,参数y改成x即可。
如果想去除刻度线,在theme函数中使用axis.ticks.y = element_blank(),如果x、y轴都想去除axis.ticks.y改成axis.ticks即可。
有时候网格线让整个图画显得复杂,我们也可以对此进行去除。breaks的参数值设为NULL就行了。
p <- ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() #去除刻度标签 p + theme(axis.text.y = element_blank()) #去除刻度线 p + theme(axis.ticks.y = element_blank(), axis.text.y = element_blank()) #去除网格线 p + scale_y_continuous(breaks=NULL)
改变刻度标签的内容和显示效果
我们不仅可以改变刻度标签的位置,还可以对标签内容进行修改。
hwp <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point() hwp + scale_y_continuous(breaks=c(50, 56, 60, 66, 72), labels=c("Tiny", "Really\nshort", "Short", "Medium", "Tallish")) #值得注意的是,若标签太长,可以用\n将文本放到下一行进行显示
为了改变刻度标签的显示效果,我们可以在theme函数中设置element_text参数中angle的值。
bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) + geom_boxplot() + scale_x_discrete(breaks=c("ctrl", "trt1", "trt2"), labels=c("Control", "Treatment 1", "Treatment 2")) #垂直显示 bp + theme(axis.text.x = element_text(angle=90, hjust=1, vjust=.5)) #换个角度显示,angle是控制刻度标签显示的角度 bp + theme(axis.text.x = element_text(angle=30, hjust=1, vjust=1)) #hjust和vjust是为了控制刻度标签在水平方向和垂直方向的位置
改变坐标轴标签内容
刚才改变的是刻度标签,我们有时还想改变各个坐标轴中标签内容。
hwp + xlab("Age in years") + ylab("Height in inches")#hwp在上面例子中已经定义过 #你也可以这么改,两者等价 hwp + labs(x = "Age in years", y = "Height in inches")
我们也可以去除各个坐标轴标签。
hwp+ theme(axis.title.x=element_blank())
改变坐标轴标签的显示效果也同样方便。
hwp + ylab("Height\n(inches)") + theme(axis.title.y=element_text(angle=90, face="italic", colour="darkred", size=14)) #这也同样适用于改变刻度线标签的字体、颜色大小。
使用对数坐标轴
我们也可以把坐标轴改变成对数坐标轴形式,使用scale_x_log10() scale_y_log10()。
library(MASS) p <- ggplot(Animals, aes(x=body, y=brain, label=rownames(Animals))) + geom_text(size=3) #只显示标签线 p + scale_x_log10() + scale_y_log10()
以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。如有错误或未考虑完全的地方,望不吝赐教。
相关文章
- 这篇文章主要介绍了R语言作图:坐标轴的设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言基本画图函数与多图多线的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
- 这篇文章主要介绍了R语言-将list转换为向量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言-切换科学计数法和更换小数点位数的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言创建矩阵的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
- 在本篇文章里小编给大家分享了一篇关于R语言运算符知识点讲解内容,有兴趣的朋友们可以参考下。...2021-05-06
- 这篇文章主要介绍了R语言中的因子类型详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言-使用快捷键快速注释的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了R语言中quantile()函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要介绍了改变R语言默认存储包的路径操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要给大家总结介绍了R语言导入导出数据的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
R语言 install.packages 无法读取索引的解决方案
这篇文章主要介绍了R语言 install.packages 无法读取索引的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06- 在本篇文章里小编给大家分享的是一篇关于R语言“包”的知识点总结内容,有兴趣的朋友们可以学习下。...2021-05-06
- 这篇文章主要给大家介绍了关于R语言逻辑回归、ROC曲线与十折交叉验证的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-06
- 这篇文章主要介绍了R ggplot2 修改默认颜色的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
- 这篇文章主要为大家详细介绍了R语言学习ggplot2绘制统计图形包的全面知识讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助...2021-11-06
- 在本篇文章里小编给大家整理的是一篇关于R语言关于随机森林算法的知识点详解内容,有兴趣的朋友们可以跟着学习下。...2021-05-13
- 这篇文章主要介绍了JavaScript获取对象在页面中位置坐标的方法,涉及JavaScript操作页面元素属性的相关技巧,需要的朋友可以参考下...2016-02-05