R - 使用 ggplot2 创建的相关热图:如何翻转 y 轴上的标签?
R - Correlation heatmap created with ggplot2: How can I flip the labels on the y-axis?
我发现了使用 ggplot2 创建相关热图的简单方法:
data(attitude)
library(ggplot2)
library(reshape2)
ggplot(melt(cor(attitude)), aes(Var1, Var2)) +
geom_tile(aes(fill = value))
但是,这会在矩阵的 反对角线 上产生方差。我希望他们在对角线上。我尝试使用 rev()
命令来完成此操作:
ggplot(melt(cor(attitude)), aes(Var1, rev(Var2))) +
geom_tile(aes(fill = value))
就图块内部的配色方案而言,效果很好。但 y 轴上的标签保持不变!我该怎么办?
我不想手动输入正确的顺序,因为我的代码应该适用于任意数据集。
我以前遇到过这个问题,在这里找到了答案:
基本上:
data(attitude)
library(ggplot2)
library(reshape2)
ggplot(melt(cor(attitude)), aes(Var1, ordered(Var2, levels = rev(sort(unique(Var2)))))) +
geom_tile(aes(fill = value))
这会反转您的 Y 轴
由于您的列名是离散的,关键是将字符串(列名)转换为因子。一旦你有因素,你可以改变顺序。
我发现了使用 ggplot2 创建相关热图的简单方法:
data(attitude)
library(ggplot2)
library(reshape2)
ggplot(melt(cor(attitude)), aes(Var1, Var2)) +
geom_tile(aes(fill = value))
但是,这会在矩阵的 反对角线 上产生方差。我希望他们在对角线上。我尝试使用 rev()
命令来完成此操作:
ggplot(melt(cor(attitude)), aes(Var1, rev(Var2))) +
geom_tile(aes(fill = value))
就图块内部的配色方案而言,效果很好。但 y 轴上的标签保持不变!我该怎么办? 我不想手动输入正确的顺序,因为我的代码应该适用于任意数据集。
我以前遇到过这个问题,在这里找到了答案:
基本上:
data(attitude)
library(ggplot2)
library(reshape2)
ggplot(melt(cor(attitude)), aes(Var1, ordered(Var2, levels = rev(sort(unique(Var2)))))) +
geom_tile(aes(fill = value))
这会反转您的 Y 轴
由于您的列名是离散的,关键是将字符串(列名)转换为因子。一旦你有因素,你可以改变顺序。