繁体   English   中英

Plot 仅使用 ggplot2 的矩阵的上三角

[英]Plot only upper triangle of the matrix using ggplot2

我有一个已经切入上三角形的矩阵:

eSim <- c(1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,1)
dim(eSim) <- c(4,4)
rownames(eSim)=c("PosLong\n1200", "PosLong\n1800", "Neglong\n1200", "Neglong\n1800")
colnames(eSim)=c("PosLong\n1200", "PosLong\n1800", "Neglong\n1200", "Neglong\n1800")

# Get upper triangle of the correlation matrix
  get_upper_tri <- function(cormat){
    cormat[lower.tri(cormat)]<- NA
    return(cormat)
  }
eSim_upper <- get_upper_tri(eSim)
melted_eSim_upper <- melt(eSim_upper, na.rm = TRUE)

这是我绘制这个矩阵的代码

ggplot(data = melted_eSim_upper, aes(Var2, Var1, fill = as.factor(value)))+
 geom_tile(color = "black", size=0.8)+
 scale_fill_manual(values=c("#8DD3C7", "#FB8072"))+
 theme_minimal()+ 
 theme(axis.text.x = element_text(angle = 45, vjust = 1, 
    size = 12, hjust = 1))+
  theme(axis.text.y = element_text(angle = 45, vjust = 1, 
    size = 12, hjust = 1))+
 coord_fixed()+
 theme(axis.title.x = element_blank(),
  axis.title.y = element_blank())+
  theme(panel.background = element_blank(), 
  panel.grid.major = element_blank(),
  panel.border = element_blank())+
  theme(axis.text.y = element_text(margin = margin(t = 0, r = 0, b = 0, l = 50)))

结果:

在此处输入图像描述

我有几个问题要实现我的最终目标:

  1. 有没有办法旋转这个 plot 诊断? 像这样的东西: 在此处输入图像描述
  2. 有没有办法将 y 轴文本移到更远的矩阵?
  1. 是的,在离散范围内使用limits = rev
  2. 是的,但更方便的做法是使用guide = guide_axis(angle = 45)而不是对主题设置进行微观管理。
library(ggplot2)

eSim <- c(1,1,-1,-1,1,1,-1,-1,-1,-1,1,1,-1,-1,1,1)
dim(eSim) <- c(4,4)
rownames(eSim)=c("PosLong\n1200", "PosLong\n1800", "Neglong\n1200", "Neglong\n1800")
colnames(eSim)=c("PosLong\n1200", "PosLong\n1800", "Neglong\n1200", "Neglong\n1800")

# Get upper triangle of the correlation matrix
get_upper_tri <- function(cormat){
  cormat[lower.tri(cormat)]<- NA
  return(cormat)
}
eSim_upper <- get_upper_tri(eSim)
melted_eSim_upper <- reshape2::melt(eSim_upper, na.rm = TRUE)

ggplot(data = melted_eSim_upper, aes(Var2, Var1, fill = as.factor(value)))+
  geom_tile(color = "black", size=0.8)+
  scale_fill_manual(values=c("#8DD3C7", "#FB8072"))+
  scale_y_discrete(limits = rev, guide = guide_axis(angle = 45)) +
  theme_minimal()+ 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, 
                                   size = 12, hjust = 1))+
  theme(axis.text.y = element_text(size = 12))+
  coord_fixed()+
  labs(x = NULL, y = NULL) +
  theme(panel.background = element_blank(), 
        panel.grid.major = element_blank(),
        panel.border = element_blank())

代表 package (v2.0.1) 于 2022 年 9 月 19 日创建

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM