R语言ggplot2画右三角方块热图的简单小例子

2021-07-12 15:51:33 浏览数 (1)

还是这幅图

image.png

本来以为今天的推文可以重复出来的,但还是高估自己了,实现过程遇到了问题,暂时还不知道如何解决,后面想到办法再来介绍吧!

今天的推文先介绍右上角的方块热图实现办法吧!

首先是方块四周的灰色边框

这里使用到的是geom_tile()函数。把填充设置为白色,然后把边框线设置为灰色就可以达成这种效果

下面是一个简单小例子

示例数据

image.png

代码

代码语言:javascript复制
library(readxl)
df5<-read_excel("Cor/exampledf.xlsx",
                sheet = "Sheet5")
df5
library(ggplot2)
ggplot() 
  geom_tile(data=df5,aes(x=x,y=y),
            fill="white",color="grey")

image.png

如果是画三角热图示例数据如下

image.png

这种是宽格式数据,读取数据然后转换为长格式

代码语言:javascript复制
library(dplyr)
df4<-readxl::read_excel("Cor/exampledf.xlsx",
                       sheet = "Sheet4")
df4 %>% 
  reshape2::melt(id.vars="x",variable.name="y") %>% 
  na.omit() -> dftmp

自定义x,y轴的顺序,通过改变因子水平来实现

代码语言:javascript复制
dftmp$x<-factor(dftmp$x,
                levels = paste0("X",1:13))
dftmp$y<-factor(dftmp$y,
                levels = paste0("Y",1:13))

画图

代码语言:javascript复制
ggplot() 
  geom_tile(data=dftmp,aes(x,y),fill="white",color="grey") 
  geom_point(data=dftmp,aes(x,y,size=abs(value),color=value),
             shape=15)

image.png

接下来简单美化

代码语言:javascript复制
ggplot() 
  geom_tile(data=dftmp,aes(x,y),fill="white",color="grey") 
  geom_point(data=dftmp,aes(x,y,size=abs(value),color=value),
             shape=15) 
  theme_minimal() 
  theme(panel.grid = element_blank()) 
  scale_x_discrete(position = "top") 
  scale_y_discrete(position = "right") 
  labs(x=NULL,y=NULL) 
  scale_colour_viridis_c()

image.png

除了用方块的形状,我们还可以使用ggstar这个包中的其他形状,比如我们来一个心形

关于ggstar这个包可以参考之前的推文 R语言ggstar包:给散点图的形状提供更多的选择

代码语言:javascript复制
library(ggstar)
ggplot() 
  geom_tile(data=dftmp,aes(x,y),fill="white",color="grey") 
  geom_star(data=dftmp,aes(x,y,size=abs(value),fill=value),
             starshape=16) 
  theme_minimal() 
  theme(panel.grid = element_blank()) 
  scale_x_discrete(position = "top") 
  scale_y_discrete(position = "right") 
  labs(x=NULL,y=NULL) 
  scale_fill_gradient(low = "green",high = "red")

image.png

今天的次条推文还是广告,这篇推文的示例数据和代码会放到次条推文的留言区

0 人点赞