世界地圖-離散餅圖

scatterpie:離散餅圖

原創(chuàng):?Y叔?biobabble?2017-04-04

scatterpie:離散餅圖

在ggplot上畫餅圖,從來不是個(gè)簡(jiǎn)單的事情,Tyler Rinker在StackOverflow上問的這個(gè)問題,3年沒人解答。

直到他看到我說ggtree有個(gè)subview函數(shù),可以圖上嵌圖之后,他自己跑了試用了一下,把餅圖嵌在于地圖之后,然后推特上AT了我,簡(jiǎn)直是畫面感很強(qiáng),我操,三年了,終于把餅圖畫在地圖上了。

subview嵌圖,這個(gè)當(dāng)然非常好,但這是把圖當(dāng)做raster image來嵌入的,當(dāng)你需要畫一堆餅圖的時(shí)候,render起來就一個(gè)字,慢!然后呢,還不能自己加legend,所以在畫很多餅圖的時(shí)候,一直不是個(gè)很好的方案。

> subview以后會(huì)defunct,因?yàn)槲矣懈玫膶?shí)現(xiàn),以后可以用**ggimage::geom_subview**

ggplot2是沒有原生餅圖支持的,而是通過柱狀圖旋轉(zhuǎn)為極坐標(biāo)從而得到餅圖,這就是之所以很難在平臺(tái)坐標(biāo)上畫出餅圖的原因。

ggforce支持原生餅圖,我們可以在平面坐標(biāo)軸上畫,ggforce的實(shí)現(xiàn)依然有些限制,也就是x-y坐標(biāo)必須要同樣的度量單位,不然餅圖會(huì)變形,因?yàn)榘霃绞侵付ǖ臄?shù)值,但數(shù)值在x-y軸上不一致。更好的實(shí)現(xiàn)應(yīng)該是半徑使用像素/英寸這種圖上固定的單位,而與數(shù)值無關(guān),這樣才能夠不變形。如果使用unit的版本出來的話,那么ggtree上畫餅圖,也更容易,而且可以在極坐標(biāo)里畫,也就是circular/fan layout tree都可以,我們一起期待。

anyway盡管有這樣的缺陷,但在地圖上,坐標(biāo)軸單位是一致的,畫在地圖上是不會(huì)變形的,ggforce的餅圖提供了一個(gè)非常好的地圖上畫餅圖方法,站在別人的肩膀上好做事啊,我大概花了兩個(gè)小時(shí),寫了個(gè)geom_scatterpie的圖層,打包在scatterpie (https://github.com/GuangchuangYu/scatterpie)里,讓同時(shí)畫很多很多的餅圖只在一瞬間。

假設(shè)有下面這個(gè)數(shù)據(jù):

指定了long, lat做x-y軸坐標(biāo),ABCD是拿來畫餅圖的數(shù)據(jù),餅圖瞬間出來:

還可以隨意指定餅圖的大小:

畫在地圖上,當(dāng)然沒問題喲:

餅圖大小是可以通過geom_scatterpie_legend加上圖例,并且現(xiàn)在通過labeller參數(shù)支持自定義半徑所對(duì)應(yīng)的實(shí)際值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • d3 (核心部分)選擇集d3.select - 從當(dāng)前文檔中選擇一系列元素。d3.selectAll - 從當(dāng)前文...
    謝大見閱讀 3,583評(píng)論 1 4
  • ggplot2包說明文檔學(xué)習(xí)筆記(1) ggplot2的繪圖數(shù)據(jù)來源是一個(gè)dataframe ggplot2通過一...
    煮豆燃逗比閱讀 621評(píng)論 0 2
  • 一線遠(yuǎn)山青黛, 寒露扣環(huán)漁寨, 孤槳逆游來, 搖曳小橋燈在。 村外,村外 籬落夕曛余態(tài)。 云亂水窗寒燭, 亭榭紅衣...
    曉七7閱讀 245評(píng)論 0 2
  • 守夜人,生在這里,也葬在這里。 小小的村落,是哺育他的生母。 每當(dāng)夜幕降臨,華燈初上的時(shí)候,他的工作便開始了。 守...
    平淡如水111閱讀 393評(píng)論 0 9
  • 一上午賦閑在家,說好了要完成的學(xué)習(xí)任務(wù)一拖再拖,終于到了吃午飯的時(shí)候也沒有認(rèn)認(rèn)真真做完一件事,嚴(yán)重懷疑自己已經(jīng)到了...
    樹上的果子貍閱讀 326評(píng)論 0 0

友情鏈接更多精彩內(nèi)容