日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”

發(fā)布時(shí)間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ggforce是ggplot2的擴(kuò)展包,“擅長(zhǎng)”于根據(jù)數(shù)據(jù)繪制輪廓以及區(qū)域放大。先將整體分為幾個(gè)重要的“版圖”,然后根據(jù)“線索”重點(diǎn)放大后在此區(qū)域進(jìn)行精細(xì)“搜尋”,最終找到“ONEPIECE”!????

一 載入數(shù)據(jù),R包

#載入R包 library(tidyverse) library(ggforce) library(nycflights13) #使用airports數(shù)據(jù)集 head(airports)# A tibble: 6 x 8faa ? 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_~

繪制基礎(chǔ)圖形

p <- airports %>%filter(lon < 0, tzone != "\\N") %>%ggplot(aes(lon, lat, color = tzone)) + geom_point(show.legend = FALSE) ? p

可以看到不同的tzone使用不同的顏色標(biāo)識(shí)出來了,那如果給每個(gè)tzone加一個(gè)輪廓應(yīng)該會(huì)更方便的區(qū)分。

二 ggforce繪制輪廓

1 添加輪廓

geom_mark_...()系列函數(shù)能夠非常簡(jiǎn)單的圍繞數(shù)據(jù)組繪制輪廓,以下四個(gè)參數(shù)可以繪制不同的輪廓:

  • geom_mark_circle()

  • geom_mark_ellipse()

  • geom_mark_hull()

  • geom_mark_rect()

使用geom_mark_rect(),以每個(gè)時(shí)區(qū)為組繪制圓角矩形輪廓

p + geom_mark_rect()

2 添加標(biāo)簽,箭頭

在上述輪廓的基礎(chǔ)上添加標(biāo)簽和指向箭頭,試試看效果如何?

p + geom_mark_rect(aes(label = tzone))

發(fā)現(xiàn)標(biāo)簽和箭頭的位置被優(yōu)化了,沒有重疊;指示符為線條加文本(默認(rèn)白色背景),可以很容易知道每個(gè)組的標(biāo)簽。

3 更改主題設(shè)置

ggforce作為ggplot2的擴(kuò)展包,也能直接使用ggplot2的主題設(shè)置

p + geom_mark_rect(aes(label = tzone), show.legend = FALSE) +theme_void()

4 hull-k ?, hulk

然而很多情況下,圍繞組繪制矩形或圓形是不理想的,此時(shí)就需要geom_mark_hull()函數(shù)來圍繞數(shù)據(jù)組的輪廓繪制更復(fù)雜的多邊形。

#使用hull需要加載concaveman包 library(concaveman) p + geom_mark_hull(aes(label = tzone)) +theme_void()

優(yōu)化:

1)fill函數(shù)添加輪廓中顏色,show.legend去掉legend;

2)expand調(diào)整輪廓大小,theme_no_axes只保留邊距。

使用expand參數(shù)中使用units()參數(shù)命令調(diào)整輪廓與點(diǎn)的邊緣的距離大小。

對(duì)于白色背景或在線文章(基本上都是白色背景),很難確定繪圖的邊距。theme_no_axes()只保留邊框可以較好的解決這個(gè)問題。

p + geom_mark_hull(aes(label = tzone, fill = tzone),show.legend = FALSE, expand = unit(3, "mm")) +theme_no_axes()

三 ggforce區(qū)域放大

如果“寶藏”的區(qū)域就在上述的位置之一(全圖展示),現(xiàn)在發(fā)現(xiàn)更可能在某個(gè)區(qū)域,那就使用facet_zoom()函數(shù)放大或聚焦在特定區(qū)域。

1 xlim和ylim設(shè)置聚焦區(qū)域

選擇左下角的Pacific/Honolulu區(qū)域進(jìn)行展示

#xlim和ylim,基于坐標(biāo)聚焦區(qū)域 p?+ facet_zoom(xlim = c(-155, -160.5), ylim = c(19, 22.3))

2 基于特定項(xiàng)設(shè)置聚焦區(qū)域

#結(jié)合filter函數(shù),基于特定項(xiàng)聚焦區(qū)域 p + facet_zoom(xy = tzone == "Pacific/Honolulu",zoom.data = tzone == "Pacific/Honolulu")

注:原圖中Pacific/Honolulu不展示。

四 整體展示

p + geom_mark_hull(aes(label = tzone, fill = tzone), show.legend = FALSE, expand = unit(3, "mm")) +theme_no_axes() +facet_zoom(x = tzone == "America/Los_Angeles",zoom.data = tzone == "America/Los_Angeles")

好了 ,現(xiàn)在就完成了根據(jù)“組”添加輪廓,再重點(diǎn)“zoom”特定區(qū)域。

其實(shí)可以做很多事情,遇到需要區(qū)別,重點(diǎn)展示的案例不妨試一下!

◆?◆?◆ ?◆?◆

往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)

機(jī)器學(xué)習(xí)

后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集

總結(jié)

以上是生活随笔為你收集整理的ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。