引言

我们还可以对图形中的坐标轴进行处理,包括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语言ggplot2包之坐标轴相关推荐

  1. [置顶]R语言 ggplot2包

    R语言  ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图 ...

  2. R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)

    R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框.竖向文本框) 目录

  3. R语言ggplot2包和lattice包可视化改变x轴和y轴的显示位置实战

    R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战 目录 R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战

  4. R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve

    R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function curve 目录 R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function cur ...

  5. R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度、增加坐标轴刻度的粒度、更加精细地表达

    R语言ggplot2可视化增加坐标轴的刻度数实战:自定义坐标轴刻度粒度.增加坐标轴刻度的粒度.更加精细地表达 目录

  6. R语言ggplot2包旋转(Rotate)可视化图像轴标签实战

    R语言ggplot2包旋转(Rotate)可视化图像轴标签实战 目录 R语言ggplot2包旋转(Rotate)可视化图像轴标签实战

  7. 使用R语言ggplot2包绘制pathway富集分析气泡图(Bubble图):数据结构及代码

    气泡图是在笛卡尔坐标系同加入大小的参数所形成的可以表示三个变量关系的图例.在对基因完成GO/KEGG分析后,使用气泡图可以直观的展示pathway.pvalue.count之间的关系.下面为使用R语言 ...

  8. 数据可视化——R语言ggplot2包绘制相关矩阵为热图

    数据可视化--R语言ggplot2包绘制相关矩阵为热图 概述:R语言软件和数据可视化--ggplot2快速绘制相关矩阵为热图.本文翻译了一篇英文博客,博客原文链接:http://www.sthda.c ...

  9. 数据可视化——R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合)

    数据可视化--R语言ggplot2包绘制精美的小提琴图(并箱线图或误差条图组合) 概述:R语言使用ggplot2工具包绘制小提琴图.为了使数据表达更加丰富,同时将小提琴图与箱线图和误差条图相结合.另外 ...

最新文章

  1. 保证同一个账号同时只能在一个设备上登录
  2. doe报告模板_技术漫谈|关于制剂研发过程中的实验设计(DOE)误区讨论
  3. wpspbc按钮是什么意思_抖音私密账号什么意思 抖音热评私密账号什么梗怎么设置?...
  4. cpu风扇转速慢_cpu风扇简介有哪些?cpu风扇选购技巧介绍_
  5. 脚本启动慢_Linux 常用运维脚本,建议收藏
  6. 【转】硬盘的寻址和工作模式
  7. 2021-0409梦笔记
  8. 历年计算机二级考试Java真题 JAVA笔试试题及答案(部分套题)
  9. java实现同步的几种方式(总结)
  10. 做一个心无杂念的平凡人
  11. SpringBoot 集成 logBack
  12. 【大数据入门】Hadoop技术原理与应用之基于Hadoop的数据仓库Hive
  13. 「光驱」先锋 DVR-111XL 刻录
  14. MongoDB系列六(聚合).
  15. Friday BI Fly | 2016年12月02日晚8点半微信直播交流 地理大数据如何驱动智慧选址第42场...
  16. 只用200行Go代码写一个自己的区块链!
  17. 新手村——C++入门篇
  18. Armijo条件,Wolfe条件,Goldstein条件
  19. 基于Python的JS逆向和AST抽象语法树
  20. MySQL学习博客第一篇

热门文章

  1. 0428-项目再开发2.0
  2. HTML5+CSS3小实例:鼠标悬停发光按钮
  3. C语言程序设计:这里输入一个数,分别求其平方值、立方值和平方根。
  4. 半导体代理商名录---芯片代理商、MLCC代理商
  5. windows找不到gpedit.msc请确定文件名
  6. sql server 全文检索 使用
  7. 网页设计之字体设置(上)
  8. 1.网络通讯-9种常用网络命令
  9. module.exports 与 exports.xxx 的区别
  10. Azure Messaging