ggforce是ggplot2的扩展包,“擅长”于根据数据绘制轮廓以及区域放大。先将整体分为几个重要的“版图”,然后根据“线索”重点放大后在此区域进行精细“搜寻”,最终找到“ONEPIECE”!😄
一 载入数据,R包
可以看到不同的tzone使用不同的颜色标识出来了,那如果给每个tzone加一个轮廓应该会更方便的区分。
二 ggforce绘制轮廓
geom_mark_...()
系列函数能够非常简单的围绕数据组绘制轮廓,以下四个参数可以绘制不同的轮廓:
geom_mark_circle()
geom_mark_ellipse()
geom_mark_hull()
geom_mark_rect()
使用geom_mark_rect(),以每个时区为组绘制圆角矩形轮廓
p + geom_mark_rect()在上述轮廓的基础上添加标签和指向箭头,试试看效果如何?
p + geom_mark_rect(aes(label = tzone))发现标签和箭头的位置被优化了,没有重叠;指示符为线条加文本(默认白色背景),可以很容易知道每个组的标签。
ggforce作为ggplot2的扩展包,也能直接使用ggplot2的主题设置
p + geom_mark_rect(aes(label = tzone), show.legend = FALSE) +然而很多情况下,围绕组绘制矩形或圆形是不理想的,此时就需要geom_mark_hull()
函数来围绕数据组的轮廓绘制更复杂的多边形。
优化:
1)fill
函数添加轮廓中颜色,show.legend
去掉legend;
2)expand
调整轮廓大小,theme_no_axes
只保留边距。
使用expand
参数中使用units()
参数命令调整轮廓与点的边缘的距离大小。
对于白色背景或在线文章(基本上都是白色背景),很难确定绘图的边距。theme_no_axes()
只保留边框可以较好的解决这个问题。
三 ggforce区域放大
如果“宝藏”的区域就在上述的位置之一(全图展示),现在发现更可能在某个区域,那就使用facet_zoom()
函数放大或聚焦在特定区域。
选择左下角的Pacific/Honolulu区域进行展示
#xlim和ylim,基于坐标聚焦区域p + facet_zoom(xlim = c(-155, -160.5), ylim = c(19, 22.3))
注:原图中Pacific/Honolulu不展示。
四 整体展示
好了 ,现在就完成了根据“组”添加轮廓,再重点“zoom”特定区域。
其实可以做很多事情,遇到需要区别,重点展示的案例不妨试一下!
◆ ◆ ◆ ◆ ◆
精心整理(含图版)|你要的全拿走!有备无患 (R统计,ggplot2绘图,生信图形可视化汇总)
【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】
联系客服