ggforce是ggplot2的扩展包,“擅长”于根据数据绘制轮廓以及区域放大。先将整体分为几个重要的“版图”,然后根据“线索”重点放大后在此区域进行精细“搜寻”,最终找到“ONEPIECE”!😄 一 载入数据,R包 library(tidyverse) library(ggforce) library(nycflights13) #使用airports数据集 head(airports) # A tibble: 6 x 8 faa name lat lon alt tz dst tzone <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr> 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/New_~ 2 06A Moton Field Municipal Ai~ 32.5 -85.7 264 -6 A America/Chic~ 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Chic~ 4 06N Randall Airport 41.4 -74.4 523 -5 A America/New_~ 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/New_~ 6 0A9 Elizabethton Municipal A~ 36.4 -82.2 1593 -5 A America/New_~ 绘制基础图形p <- airports %>%filter(lon < 0, tzone != "\\N") %>% ggplot(aes(lon, lat, color = tzone)) + geom_point(show.legend = FALSE) p 可以看到不同的tzone使用不同的颜色标识出来了,那如果给每个tzone加一个轮廓应该会更方便的区分。 二 ggforce绘制轮廓 1 添加轮廓
使用geom_mark_rect(),以每个时区为组绘制圆角矩形轮廓 p + geom_mark_rect()2 添加标签,箭头在上述轮廓的基础上添加标签和指向箭头,试试看效果如何? p + geom_mark_rect(aes(label = tzone))发现标签和箭头的位置被优化了,没有重叠;指示符为线条加文本(默认白色背景),可以很容易知道每个组的标签。 3 更改主题设置ggforce作为ggplot2的扩展包,也能直接使用ggplot2的主题设置 p + geom_mark_rect(aes(label = tzone), show.legend = FALSE) +theme_void() 4 hull-k , hulk然而很多情况下,围绕组绘制矩形或圆形是不理想的,此时就需要 library(concaveman) p + geom_mark_hull(aes(label = tzone)) + theme_void() 优化:
使用 对于白色背景或在线文章(基本上都是白色背景),很难确定绘图的边距。 三 ggforce区域放大 如果“宝藏”的区域就在上述的位置之一(全图展示),现在发现更可能在某个区域,那就使用 1 xlim和ylim设置聚焦区域选择左下角的Pacific/Honolulu区域进行展示 #xlim和ylim,基于坐标聚焦区域p + facet_zoom(xlim = c(-155, -160.5), ylim = c(19, 22.3)) 2 基于特定项设置聚焦区域#结合filter函数,基于特定项聚焦区域p + facet_zoom(xy = tzone == "Pacific/Honolulu",zoom.data = tzone == "Pacific/Honolulu") 注:原图中Pacific/Honolulu不展示。 四 整体展示 theme_no_axes() + facet_zoom(x = tzone == "America/Los_Angeles",zoom.data = tzone == "America/Los_Angeles") 好了 ,现在就完成了根据“组”添加轮廓,再重点“zoom”特定区域。 其实可以做很多事情,遇到需要区别,重点展示的案例不妨试一下! ◆ ◆ ◆ ◆ ◆ 精心整理(含图版)|你要的全拿走!有备无患 (R统计,ggplot2绘图,生信图形可视化汇总) 【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】
|
|