如下所示,我有两列数据,要绘制箱线图,以第一列为Y轴,第二列为X轴,希望X轴的输出顺序按照第二列由上到下排列。
然而软件输出的顺序如下:
解决方案:
通过一个因子事先自定义X轴顺序,作图命令如下:
至此,X轴各项目会按照我们自定义的顺序排列。
喜大普奔,终于解决了reorder()降序排序的问题;举例说明一下:
首先我有两列数据:第一列是样品名,第二列是对应数值。
先画个简单的barplot:
如下图:
我想将x轴排序,可以提前将数据排好序之后再画图,但是这里用reorder()函数直接根据y值的大小排序:
如图:
但是reorder如何从大到小排呢?
研究了好久,比如加了reverse=F/T,加了decrease=F/T,等等,都不行,终于发现原来只要加个“-”就可以:
图:
图不怎么好看,只是为了演示reorder从大到小排序。
数据准备
1 基础图形绘制
2 禁用坐标轴
禁用全部坐标轴
禁用坐标轴但保留边框
禁用部分坐标轴
3 坐标轴参数设置
函数:axis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA, pos = NA, outer = FALSE, font = NA, lty = "solid", lwd = 1, lwd.ticks = lwd, col = NULL, col.ticks = NULL, hadj = NA, padj = NA, gap.axis = NA, ...)
side表示坐标轴位置,取值1、2、3、4分别代表下、左、上、右;
at表示需要添加刻度的数值,默认会根据变量的取值范围计算几个合适的刻度,也可以手工指定;
labels表示刻度标签,指定在刻度上需要标记的内容,默认就是刻度对应的值;
tick是逻辑变量,取TRUE表示显示坐标轴和刻度线,取FALSE时,坐标轴线和刻度线不画出;
line表示坐标轴线位置与图像边框的距离,取负数时会画在图像边框以内;
pos 表示轴线所在的位置; line.outer取TRUE时,坐标轴将画在画布边缘处; font.axis表示坐标轴刻度值的字体,font=1表示正体,2表示黑体,3表示斜体,4表示黑斜体。
lty表示线型,用在axis函数中表示坐标轴线型;
lwd表示线的粗细,用在axis函数中表示坐标轴线粗细;
lwd.ticks表示刻度线粗细。
col表示图的颜色,用在axis函数中表示坐标轴线和坐标刻度线的颜色;
col.axis表示坐标轴刻度值的颜色;
col.ticks表示坐标轴刻度线的颜色;
hadj指将刻度值沿平行坐标轴方向调整的距离;
padj指将刻度值沿垂直坐标轴方向调整的距离;
las表示坐标刻度值文字方向,las=0表示文字方向与坐标轴平行,1表示始终为水平方向,2表示与坐标轴垂直,3表示终为垂直方向。
tck表示刻度线长度。
4 次要刻度线
minor.tick(nx=n,ny=n,tick.ration=n)
nx和ny分别指定了X轴和Y轴每两条主刻度线之间通过次要刻度线划分得到的区间个数。 tick.ratio表示次要刻度线相对于主刻度线的大小比例。
参考资料:
《R语言实战》(中文版),人民邮电出版社,2013.
R语言作图:坐标轴设置, https://blog.csdn.net/weixin_40628687/article/details/79254791
R语言低级绘图函数-axis, https://www.cnblogs.com/xudongliang/p/6762618.html