R语言ggstar包:给散点图的形状提供更多的选择
image.pngR语言的ggplot2包画散点图如果想给不同的变量映射形状的话,可以选择的形状如下
这个虽然看起来有很多,但是个人认为可用的就只有4个,就是15,16,17,18,如果超过四个,搭配上其他的话就会有实心的和空心的,搭配到一起不太好看。而且还有一个问题,如果变量的分类超过6个,就会提示
Warning messages: 1: The shape palette can deal with a maximum of 6 discrete values because more than 6 becomes difficult to discriminate; you have 8. Consider specifying shapes manually if you must have them. 2: Removed 2 rows containing missing values (geom_point).
比如运行如下代码你就会遇到上面的提示
df<-data.frame(x=LETTERS[1:8],
y=1:8)
library(ggplot2)
ggplot()+
geom_point(data=df,aes(x=x,y=y,shape=x,fill=x),size=5)
大体的意思就是超过6个形状不太好区分,如果你非要用,就手动指定形状,这个时候需要叠加scale_shape_manual()
函数
今天在看ggtreeExtra论文中的代码,发现其中提到了一个包是
ggstar
,找到帮助文档看了一下,主要的功能就是定义了新的函数geom_star()
提供了更多的形状选择
帮助文档的链接
https://cran.r-project.org/web/packages/ggstar/vignettes/ggstar.html
github主页的链接
https://github.com/xiangpin/ggstar/
这里提供的形状包括
p1 <- show_starshapes()
p1+theme_void()
image.png
一个简单的用法
首先是安装和加载
install.packages("ggstar")
library(ggstar)
library(ggplot2)
准备绘图数据
df<-data.frame(x=LETTERS[1:8],
y=1:8)
画图
ggplot()+
geom_star(data=df,aes(x=x,y=y,starshape=x,fill=x),size=5)+
theme_bw()
image.png
如果想要手动挑选形状,可以使用scale_starshape_manual()
函数
ggplot()+
geom_star(data=df,aes(x=x,y=y,starshape=x,fill=x),
size=20)+
theme_bw()+
scale_starshape_manual(values = rep(16,8))
image.png
最后是一个有意思的简单小例子
ggplot()+
geom_point(aes(x=1,y=1),shape=73,size=30,color="red")+
geom_star(aes(x=1.5,y=1),starshape=16,size=30,fill="red")+
geom_point(aes(x=2,y=1),shape=85,size=30,color="red")+
xlim(0.9,2.2)+
#theme_void()+
theme(aspect.ratio = 0.5)
image.png
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!