还是这幅图
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
今天的次条推文还是广告,这篇推文的示例数据和代码会放到次条推文的留言区