R语言自定义坐标轴排序

Python020

R语言自定义坐标轴排序,第1张

        R语言作图时,默认情况下软件会按照自己的方式对坐标轴的项目进行排序,然而这种排序往往不是我们所希望的,因此需要想办法让坐标轴的项目按照我们希望的顺序输出。

        如下所示,我有两列数据,要绘制箱线图,以第一列为Y轴,第二列为X轴,希望X轴的输出顺序按照第二列由上到下排列。

然而软件输出的顺序如下:

解决方案:

通过一个因子事先自定义X轴顺序,作图命令如下:

至此,X轴各项目会按照我们自定义的顺序排列。

theme: 是处理图美观的一个函数,可以调整横纵轴 label 的选择、图例的位置等。

这里选择 X 轴标签 45 度。

hjust 和 vjust 调整标签的相对位置,

具体见下图。

简单说,hjust 是水平的对齐方式,0 为左,1 为右,0.5 居中,0-1 之间可以取任意值。

vjust 是垂直对齐方式,0 底对齐,1 为顶对齐,0.5 居中,0-1 之间可以取任意值。

legend.position, 可以接受的值有 top, bottom, left, right, 和一个坐标 c(0.05,0.8) (左上角,坐标是相对于图的左下角 (即原点) 计算的)

为了更好的可视化效果,需要对数据做些预处理,主要有 对数转换,Z-score 转换,抹去异常值,非线性颜色等方式。

Z-score 又称为标准分数,是一组数中的每个数减去这一组数的平均值再除以这一组数的标准差,代表的是原始分数距离原始平均值的距离,以标准差为单位。可以对不同分布的各原始分数进行比较,用来反映数据的相对变化趋势,而非绝对变化量。

正常来讲,颜色的赋予在最小值到最大值之间是均匀分布的。如果最小值到最大值之间用 100 个颜色区分,则其中每一个 bin,不论其大小、有没有值都会赋予一个颜色。非线性颜色则是对数据比较小但密集的地方赋予更多颜色,数据大但分布散的地方赋予更少颜色,这样既能加大区分度,又最小的影响原始数值。通常可以根据数据模式,手动设置颜色区间。为了方便自动化处理,也可选择用四分位数的方式设置颜色区间。

如果想保持图中每一行的顺序与输入的数据框一致,需要设置因子的水平。这也是 ggplot2 中调整图例或横纵轴字符顺序的常用方式。

绘制热图除了使用 ggplot2,还可以有其它的包或函数,比如 pheatmap::pheatmap (pheatmap 包中的 pheatmap函数)、gplots::heatmap.2 等。

相比于 ggplot2 作 heatmap, pheatmap 会更为简单一些,一个函数设置不同的参数,可以完成行列聚类、行列注释、Z-score 计算、颜色自定义等。

给矩阵的行和列进行分组注释