其他
奇怪的图例作业
点击上方关注我们
01
AUTUMN
宣传
半年前注册的知识星球账号终于有用武之地了!但是那个是需要付费才能加入的,于是删掉重新建了一个免费的知识星球。
可以在里面讨论
、交流
、留言
、提问题
、发布作业
等等功能,相对于公众号而言,更像是一个线下 讨论班 的感觉。欢迎大家加入!我也会在里面 发布作业给大家挑战自己哦 。
左边是 微信小程序 ,方便直接查看和进入,也可以 扫描右边的二维码 加入星球。
今天发布了一个小作业,目前大概是没人投稿,欢迎大家充分展示自己的 R 语言技能哦!
02
AUTUMN
纠错
有位粉丝在阅读 环形热图进阶
文章时发现一个漏洞,就是 添加样本注释
的时候没有 s_anno 这个变量,可能是我复制代码时候遗漏了,大家运行的时候加上这句就可以了。
# 添加样本注释
s_anno <- data.frame(samp = c('control','control','treat','treat'),n = c('S1','S2','S3','S4'))
s_anno
samp n
1 control S1
2 control S2
3 treat S3
4 treat S4
03
AUTUMN
交作业
目标图:
我先交一下我的作业吧。目标是绘制上面这张图的图例,我第一眼想的是 ggplot 画,但是看图形很可能是 plot 基础绘图函数绘制
的,于是探索了一下 legend 这个函数。
1、方法一
同时一起绘制:
# 新建画板
plot.new()
# 绘制图例
legend("center", # 图例位置
title = "DOM-OTU pair", # 图例标题
title.adj = 0.5, # 图例位置
legend = c("Hani","Lianghu","Sanjiang","Taihu"), # 图例内容标签
bty = 'n', # 不展示图例边框
lwd = 2, # 线的粗细
col = c("#39A2DB","#CCFFBD","#FC92E3","#FA1E0E"), # 线颜色
pt.cex = 4, # 点的大小
x.intersp = 1, # 图例中文字离图片的水平距离
pch = c(16,16,16,16), # 形状
merge = F, # 圆和线不重叠显示
border = c("#035397", "#5D8233","#D62AD0","#DA0037"), # 正方形边框颜色
fill = c("#39A2DB","#CCFFBD","#FC92E3","#FA1E0E"), # 正方形填充颜色
cex = 2) # 字体大小
看到圆形并没有达到边框颜色和正方形的边框颜色一致,调了很多次还是没办法哈哈。
2、方法二
先绘制正方形,再添加圆,这个得多次好好调整圆的位置:
# 分别添加
# 新建画板
plot.new()
# 绘制方形图例
legend("center", # 图例位置
title = "DOM-OTU pair", # 图例标题
title.adj = 0.5, # 图例位置
legend = c("","","",""), # 图例内容标签
bty = 'n', # 不展示图例边框
# pch = c(22,22,22,22), # 形状
pt.cex = 4, # 点的大小
cex = 2, # 字体大小
border = c("#035397", "#5D8233","#D62AD0","#DA0037"), # 正方形边框颜色
merge = F, # 圆和线不重叠显示
fill = c("#39A2DB","#CCFFBD","#FC92E3","#FA1E0E"), # 正方形填充颜色
)
添加圆形图例:
# 添加圆形
legend(x = 0.438,y = 0.91, # 图例位置
# title = "DOM-OTU pair", # 图例标题
legend = c("Hani","Lianghu","Sanjiang","Taihu"), # 图例内容标签
bty = 'n', # 不展示图例边框
lwd = 2, # 线的粗细
pch = c(19,19,19,19), # 形状
pt.cex = 4, # 点的大小
cex = 2, # 字体大小
col = c("#39A2DB","#CCFFBD","#FC92E3","#FA1E0E"), # 正方形边框颜色
merge = F, # 圆和线不重叠显示
x.intersp = 1, # 图例中文字离图片的水平距离
)
3、方法三
当然是 ggplot 大法,先构建数据:
# 构建数据
da <- data.frame(type = c(rep('a',4),rep('b',4)),
y = rep(1:4,2),
name = rep(c('Taihu','Sanjiang','Lianghu','Hani'),2))
da
type y name
1 a 1 Taihu
2 a 2 Sanjiang
3 a 3 Lianghu
4 a 4 Hani
5 b 1 Taihu
6 b 2 Sanjiang
7 b 3 Lianghu
8 b 4 Hani
画图:
# 画图
ggplot(da,aes(x = type,y = y,shape = type,
fill = name,color = name)) +
# 添加点
geom_point(size = 13,show.legend = F) +
# 添加连线
geom_segment(aes(x = 1.05,xend = 1.95,y = y,yend = y,color = name),
size = 1,show.legend = F) +
# 修改点形状
scale_shape_manual(values = c('a' = 22,'b' = 21)) +
# 设置边框颜色
scale_color_manual(values = c("#035397", "#5D8233","#D62AD0","#DA0037")) +
# 设置填充颜色
scale_fill_manual(values = c("#39A2DB","#CCFFBD","#FC92E3","#FA1E0E")) +
theme_void() +
# 标题
labs(title = "DOM-OTU pair") +
# 标题居中
theme(plot.title = element_text(hjust = 0.5,size = 18)) +
# 添加注释文字标签
annotate(geom = 'text',label = 'Taihu',x = 2.2,y = 4,size = 7,
hjust = 0) +
annotate(geom = 'text',label = 'Sanjiang',x = 2.2,y = 3,size = 7,
hjust = 0) +
annotate(geom = 'text',label = 'Lianghu',x = 2.2,y = 2,size = 7,
hjust = 0) +
annotate(geom = 'text',label = 'Hani',x = 2.2,y = 1,size = 7,
hjust = 0)
收官!
代码 我上传到 QQ 群 老俊俊生信交流群
文件夹里。欢迎加入。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦。
群二维码:
老俊俊微信:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
推 荐 阅 读