拓端tecdat|R語言在地圖上繪制月亮圖、餅狀圖數(shù)據(jù)可視化果蠅基因種群
原文鏈接:http://tecdat.cn/?p=23322?
原文出處:拓端數(shù)據(jù)部落公眾號
月亮圖和餅圖
餅圖把一個圓分成多個部分,這些部分的弧長(以及面積)代表一個整體的比例。月亮圖也是如此,它把一個圓分成多個部分,這些部分的面積代表整個圓的比例,但在月亮圖中,這些部分被畫成圓的月牙形,就像月相。?

使用月亮圖而不是餅圖背后的動機主要是審美的選擇。還要注意的是,由于月亮圖的各部分是從圓的一側(cè)或另一側(cè)掃過的,所以一般只適合于描述一個或兩個群體。
月亮圖與Kosara(2019)1的 "圓形切片 "圖類似。在研究受試者對不同圖表類型中百分比的感知時,"圓形切片 "的表現(xiàn)與餅圖類似。月亮圖與 "圓形切片 "的不同之處在于,后者是在一個基礎(chǔ)圓上滑動第二個同樣大小的圓盤,更像是月食而不是月相。然而,兩者都依賴面積作為視覺線索。
用法
ggplot2數(shù)據(jù)可視化包,為R語言中的月亮圖提供支持。它們的繪制方式與ggplot2中的點最為相似:它們的位置由一個x和一個y坐標(biāo)定義,它們的大小與坐標(biāo)系無關(guān),所以它們總是保持圓形。
ggplot(data.frame(x = 1:5, y = 1)) +
geom_point(y = 2) +
scale_size(range = c(5, 10))+

兩個新的美學(xué)在geom_moon中也很重要:比例和填充
。
比例美學(xué)
比率控制要繪制的月亮的比例。它必須在0("新月",實際上什么都沒畫)和1("滿月",即一個圓)之間。
ggplot(data.frame(x = 1:5, y = 0, ratio = 0:4 * 0.25), aes(x = x, y = y),ratio = ratio), size = 20, fill = "black") +
geom_text(aes(y = y + 1, label = ratio)) +

填充
美學(xué)
右邊需要一個布爾值,控制月亮是 "升 "還是 "降",也就是說,它是由右邊還是左邊 "填充 "的。
用兩種顏色制作一個 "完整 "的月亮的一種方法是用right = TRUE表示一種顏色,用right = FALSE表示另一種顏色,比例互補。
ggplot( moons) +
geom(aes(x, y, ratio = ratio, right = right, fill = right)) +

圖例關(guān)鍵字
三個關(guān)鍵字,用于不同類型的圖例:默認(rèn)值,繪制一個右邊的懸臂月(見上文)。
left從左邊畫出一個新月,與長臂月互補,這對組合圖例很有用。
ggplot(aes(x, y, ratio = ratio, right = right, size = 2^x)) +
geom(data = subset(moons, right)) +
geom(
key = left
)

key畫的是一個圓。它類似于 "點 "的形狀,但計算方式略有不同,所以如果你想讓圖例月亮的尺寸和月亮的尺寸相匹配,就更合適。
ggplot(tidymoons) +
geom(key = full
) +

工作實例
地圖上的月亮圖
多餅圖的一個常見用途是表示地圖上不同坐標(biāo)處的比例。x和y維度已經(jīng)致力于地圖坐標(biāo),所以像柱狀圖這樣的比例可視化就比較困難。這是一個嘗試月形圖的絕佳機會!
餅圖地圖在人口遺傳學(xué)中很流行,所以讓我們看一下該領(lǐng)域的一個例子。數(shù)據(jù)包含果蠅種群中Adh基因的兩個變體的頻率。這些種群中有許多都很接近,所以我們必須處理過度繪制的問題,我們在下面手動處理。
moonmap <- ggplot(da, aes(long, lat)) +
geom_polygon(
data = map_data(
"world"),
aes(group = group),
) +

如果我們想在圖例中明確標(biāo)注等位基因,那么我們需要將它們映射到一個組中,這就要求我們將數(shù)據(jù)重新排列成一個 "較長"("整齊")的格式。?
reshape(
v.names = "percent",
times = c("dhF", "dhS"),
direction = "long"
)

月球數(shù)據(jù)
有時你只是想繪制月球的文字表述。改編自NASA的月球數(shù)據(jù),包含了2019年每天從地球到月球的距離,以及月球四個主要階段每次出現(xiàn)的日期(UTC)。我們可以用月球圖(在這種情況下與餅圖相同)繪制這些主要階段。
ggplot(lunardist, aes(date, distance)) +
geom_line() +
# 將下層繪制成一個完整的圓
geom(data = phase, ratio = 1, size = 5, fill = "black") +

Harvey balls哈維球分析法
"哈維球 "本質(zhì)上是用于定性比較的餅圖,通常以表格形式出現(xiàn)。我們可以使用月形圖來達(dá)到同樣的目的。
首先,讓我們獲取一些數(shù)據(jù)。

哈維月亮的圖表。
# 首先,我們將數(shù)據(jù)變化為 "長 "格式,以方便繪圖。
rest <- reshape(
restaurants,
timevar = "Category",
direction = "long"
)
ggplot(rest, aes(0, 0)) +
geom(aes(ratio = (Score - 1) / 4), fill = "black") +
theme(
panel.grid = element_blank()

參考文獻(xiàn)
Kosara, R. 2019. Circular Part-to-Whole Charts Using the Area Visual Cue. EuroVis 2019 - Short Papers.?https://doi.org/10.2312/evs.20191163??
Oakeshott, J.G., et al.?1982. Alcohol dehydrogenase and glycerol-3-phosphate dehydrogenase clines in?Drosophila melanogaster?on different continents. Evolution, 36(1): 86-96.??

最受歡迎的見解
1.R語言動態(tài)圖可視化:如何、創(chuàng)建具有精美動畫的圖
2.R語言生存分析可視化分析
3.Python數(shù)據(jù)可視化-seaborn Iris鳶尾花數(shù)據(jù)
4.r語言對布豐投針(蒲豐投針)實驗進(jìn)行模擬和動態(tài)
5.R語言生存分析數(shù)據(jù)分析可視化案例
6.r語言數(shù)據(jù)可視化分析案例:探索brfss數(shù)據(jù)數(shù)據(jù)分析
7.R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖
8.R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析案例報告
9.python主題LDA建模和t-SNE可視化