ggplot2定制坐标轴

您所在的位置:网站首页 r语言箱线图怎么看 ggplot2定制坐标轴

ggplot2定制坐标轴

2023-05-09 23:45| 来源: 网络整理| 查看: 265

本文主要介绍如何通过调整ggplot2中的参数,来实现坐标轴的定制化,来达到个性化绘图的需求。文中axis tick marks指的是坐标轴线上的刻度,axis labels指的是对应刻度上的标签。而xlab和ylab函数用于设置坐标轴的标签,不是刻度标签,要注意区分,当然也可以使用labs函数进行设置。

1. 用于演示的数据

R软件本身包含一些基础包,并且在R启动的时候自动导入,例如包含内置数据集合的datasets包(可以输入library(help = "datasets")查看包中的所有数据集。),本次我们使用“不用剂量的VC,使用两种递送方式对豚鼠牙齿成长作用”的数据集,包含三列分别使len(牙齿长度)、supp(递送方式)和dose(剂量)。

#使用ToothGrowth数据集,并将dose列转换为因子类型,通过head查看数据的前几行 >ToothGrowth$dose head(ToothGrowth) len supp dose 1 4.2 VC 0.5 2 11.5 VC 0.5 3 7.3 VC 0.5 4 5.8 VC 0.5 5 6.4 VC 0.5 6 10.0 VC 0.5 2. 示例图形

使用最少的绘图参数绘制不同剂量下豚鼠牙齿长度的箱线图,评估VC剂量对其是否存在影响。

>library(ggplot2) >p p 3. 修改坐标轴刻度标签

坐标轴刻度标签可以通过设置theme函数中的axis.text*参数进行设置,这些参数对应的数据类型为element_text()类型,所以只需要修改element_text()中的参数后再赋值给对应axis.text参数即可。 通过查看函数帮助文档可以发现有axis.text, axis.text.x, axis.text.x.top, axis.text.x.bottom, axis.text.y, axis.text.y.left, axis.text.y.right多个参数,他们分别控制不同的范围,axis.text设置所有坐标轴刻度标签外观,axis.text.y.right用于设置y轴右侧刻度标签外观。

# element_text()函数中相关参数说明 family : 设置字体类型 face : 修改字体形态,例如加粗、斜体等 colour : 文本的颜色 size : 以像素设置字体的大小 angle : 文本逆时针旋转角度[0-360] >p + theme(axis.text.x = element_text(face="bold", color="#993333", size=14, angle=45), axis.text.y = element_text(face="bold", color="#993333", size=14, angle=45)) 修改了刻度标签的颜色,并逆时针旋转45度 4. 隐藏坐标轴刻度标签

当我们将axis.text*设置为element_blank()时,刻度标签将不再显示,除了坐标轴刻度标签,坐标轴上面还有坐标轴刻度axis_ticks、坐标轴主线axis_line,这两个参数对应的类型为element_line(),当然如果将axis_ticks设置为element_blank()时,刻度将不再展示。

#x/y轴的刻度标签设置为空 p + theme( axis.text.x = element_blank(),axis.text.y = element_blank()) #x/y轴的刻度标签设置为空,并且坐标轴刻度不再显示(设为空) p + theme( axis.text.x = element_blank(),axis.text.y = element_blank(),axis.ticks = element_blank()) 右侧的图没有了刻度 5. 修改坐标轴主线和刻度外观

theme函数用于设置图形主题,其中axis.ticks*参数家族用于设置坐标轴刻度外观,axis.line*用于这只坐标轴主线外观,它俩的参数类型都是element_line()类型。

#函数element_line()中用于设置线条外观的参数和说明 colour,color: 线条的颜色 size: 线条的大小,即粗细 linetype: 线条的类型可以实文本“blank”, “solid”, “dashed”, “dotted”, “dotdash”, “longdash”, “twodash”,也可以是数字0, 1, 2, 3, 4, 5, 6. 更多可以参考:http://www.sthda.com/english/wiki/ggplot2-line-types-how-to-change-line-types-of-a-graph-in-r-software lineend: 线条末端类型 round(圆形弧度), butt(末端粗大)、(末端方形) >p + theme( axis.line = element_line(colour = "darkblue", size = 1, linetype = "solid")) 修改坐标轴线为蓝色 6. 设置连续、离散坐标轴的刻度

图形中x、y轴都可以是离散或者连续的,我们可以使用scale_x_discrete() 和scale_y_discrete()分别设置坐标轴刻度的位置、刻度标签和范围等。

6.1 离散坐标轴

函数scale_x_discrete()和scale_y_discrete()分别用于设置x、y的坐标轴,可以完成对以下坐标轴外观的修改,还可以通过limits调整绘图顺序。

axis titles,刻度标签 axis limits (data range to display),刻度显示范围 choose where tick marks appear,选择要显示的刻度 manually label tick marks,手动添加/修改刻度标签 #对应的参数如下: name : x or y axis labels,刻度标签 breaks : 设置刻度显示的位置. 可以是三种类型的值: NULL : 表示不显示刻度 breaks waiver() : 使用包内置的方式计算显示刻度位置 字符串或数值的向量,指定刻度所在的位置 labels : 设置刻度上的标签,向量时与breaks对应的标签名称,NULL不设标签,waiver() 默认标签 limits : 离散坐标轴时,试一个字符串类型的向量,指定要显示位置信息 #默认图形 >p # 修改x轴的标题,并通过limits参数设置数据的绘图顺序 >p + scale_x_discrete(name ="Dose (mg)", limits=c("2","1","0.5")) 修改绘图顺序

通过breaks和labels配合的方式,或单独使用labels修改指定坐标轴刻度上的标签。

#breaks和labels长度相同,即在breaks指定位置添加标签 >p + scale_x_discrete(breaks=c("0.5","1","2"),labels=c("Dose 0.5", "Dose 1", "Dose 2")) # 单独使用labels,等号左边是位置,右边是标签内容 >p + scale_x_discrete(labels=c("0.5" = "Dose 0.5", "1" = "Dose 1", "2" = "Dose 2"))

手动设置刻度标签内容 其中breaks和labels一起使用可以设置是否在给定位置添加、修改标签,而limits参数不仅可以用于设置绘图顺序,还可以筛选数据,还需要注意的是limits中的参数必须在数据集中存在。

>p1p2p3spsp + scale_x_continuous(name="Speed of cars", limits=c(0, 30))+scale_y_continuous(name="Stopping distance", limits=c(0, 150)) 修改轴标签和修改绘图范围

下面代码展示了如何使用scale_y_continuous()函数设置y轴上的刻度和刻度标签的位置。

>p + scale_y_continuous(breaks=seq(0,40,5)) >p + scale_y_continuous(breaks=c(5,7.5, 20, 25)) >p + scale_y_continuous(breaks=NULL) 从左往右对应上面代码的绘图结果

格式化设置刻度标签内容,这里需要用到额外的scales包。

library(scales) # 设置刻度标签为百分比 p + scale_y_continuous(labels = percent) # 设置刻度标签为科学计数法 p + scale_y_continuous(labels = scientific) 格式化刻度标签内容

参考链接:http://www.sthda.com/english/wiki/ggplot2-axis-ticks-a-guide-to-customize-tick-marks-and-labels



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3