# 跟着Nature学作图：R语言ggplot2三角热图按照指定的角度旋转

## 论文

Whole-genome doubling drives oncogenic loss of chromatin segregation

https://www.nature.com/articles/s41586-023-05794-2#MOESM10

ggplot2能够做这种三角热图，但是怎么让热图的尖朝上，之前还没有尝试过，基本思路就是可以让整个图进行旋转，查了一下怎么让ggplot2整体旋转，很多都是借助grid包的语法来实现，但是grid的作图我还不是很理解，找了好长时间看有没有ggplot2的扩展包可以做，找到了一个参考链接

https://www.jianshu.com/p/802bdefa8feb

## 一个简单的小例子

library(ggplot2)

pp<-ggplot()+
geom_point(aes(x=1,y=1))+
coord_cartesian(clip = "off")

pp
cowplot::ggdraw()+
cowplot::draw_plot(ggplotify::as.ggplot(pp,angle = -45),
width = 0.5,height = 0.5,
hjust = -0.2,
vjust = -0.5)

## 读取数据

library(readxl)
#install.packages("rlang")
dat

## 普通三角热图

library(ggplot2)
ggplot(data=dat,aes(x=x,y=y))+
geom_tile(aes(fill=log2(value)))+
coord_equal(clip = "off") -> p

p

## 添加文本标签

library(tidyverse)
dat %>% pull(x) %>% unique()
p+
geom_text(data=data.frame(x=1:8,y=0:7,label=dat %>% pull(x) %>% unique()),
aes(x=x,y=y,label=label),angle=90)+
theme_void() -> p1
p1

## 在指定的地方添加线段

p1+
geom_path(data=data.frame(x=c(0.5,0.5,4.5,4.5,3.5,3.5,2.5,2.5,1.5,1.5,0.5),
y=c(0.5,4.5,4.5,3.5,3.5,2.5,2.5,1.5,1.5,0.5,0.5)),
aes(x=x,y=y),
color="black",size=1)+
geom_path(data=data.frame(x=c(0.5,0.5,4.5,4.5,3.5,3.5,2.5,2.5,1.5,1.5,0.5)+4,
y=c(0.5,4.5,4.5,3.5,3.5,2.5,2.5,1.5,1.5,0.5,0.5)+4),
aes(x=x,y=y),
color="black",size=1) -> p2
p2


## 更改配色

p2+
mid = "white",
high = scales::muted("blue"),
midpoint = 0)+
theme(legend.position = "none") -> p3
p3

## 添加一些额外的注释

p3+
annotate(geom = "segment",x=0.4,xend=0.4,y=0.5,yend=4.5,
size=2,color="red")+
annotate(geom = "text",x=0.2,y=2.5,label="A",angle=45,size=5)+
annotate(geom = "segment",x=4.5,xend=8.5,y=8.6,yend=8.6,
size=2,color="blue")+
annotate(geom = "text",x=6.5,y=8.8,label="B",angle=45,size=5) -> p4
p4

## 最后顺时针旋转45度

library(cowplot)
ggdraw()+
draw_plot(ggplotify::as.ggplot(p4,angle = -45),
width = 0.7,height = 0.7,
hjust = -0.2,
vjust = -0.1)+
annotate(geom = "text",x=0.5,y=0.2,label="Chromatin subcompartments") -> p5

p5

## 最后再给添加一个图例

p2+
mid = "white",
high = scales::muted("blue"),
midpoint = 0)+
theme(legend.position = "bottom")+
guides(fill=guide_colorbar(title.position = "top",
title.hjust = 0.5,barwidth = 20)) -> p3.1

p5+
annotation_custom(grob = ggpubr::get_legend(p3.1),
xmin = 0.1,xmax=0.9,
ymin=0.1,ymax=0.2)

## 还可以拼图

library(patchwork)

p6+p6

## 直接点击 设为星标 就可以了

|
11天前
r语言ggplot2误差棒图快速指南
r语言ggplot2误差棒图快速指南
23 0
|
11天前
|

R语言可视化：ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
R语言可视化：ggplot2冲积/桑基图sankey分析大学录取情况、泰坦尼克幸存者数据
32 1
|
11天前
|

22 0
|
9月前
|

1824 0
|
9月前
|

593 0
|
9月前
|

150 0
|
11月前
|

R语言- ComplexHeatmap 绘制复杂热图示例
ComplexHeatmap是R语言中用于绘制复杂热图的一个重要包。它提供了一种灵活、高效、易于定制的方法来绘制热图，并支持多种数据类型和数据格式，支持包括多种热图类型，包括基本热图、聚类热图、分组热图、矩阵热图等。用户可以根据自己的需求选择不同的热图类型，并进行灵活的定制。在生物信息学、医学、生态学等领域得到广泛应用。 本文将通过一个复杂热图的创建示例分享 ComplexHeatmap的语法规则。
567 0
|

126 0
|
11天前
|

【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
26 2
|
11天前
|

R语言逻辑回归logistic模型ROC曲线可视化分析2例：麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例：麻醉剂用量影响、汽车购买行为
27 2