亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用ggplot2繪制餅圖pie

發布時間:2022-03-18 15:13:23 來源:億速云 閱讀:1475 作者:小新 欄目:開發技術

這篇文章主要介紹如何使用ggplot2繪制餅圖pie,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

繪制餅圖的過程中,利用ggplot2的geom_bar結合coord_polar實現,需要理解的點是餅圖的排布是按照aes(fill)的因子順序確定的。譬如數據如下

> dat
  type Num
1    A  90
2    B  34
3    C  56
4    D  99
5    E  15

必須根據數據先確定mapping 中aes(fill)的因子順序,譬如這里會按照dat$type 填充,這種非有序因子會基于字母順序來默認其填充順序。

為了確定數據填充的先后,同時方便在不同區域上填寫上對應數據的大小,所以會先去創建有序因子,從而使數據列dat$Num的自然順序和因子的順序在一定程度上一致(一致的同向對應或反向對應)。譬如如下使方向一致:

dat$type=factor(dat$type,levels = dat$type,order=T)
dat$type

有序因子的結果則如下,和dat$Num的順序能夠一致上,不會出現對應錯亂問題

[1] A B C D E
Levels: A < B < C < D < E

畫圖:

p_pie=ggplot(dat,aes(x="",y=dat[,2],fill=dat[,1]))+
  geom_bar(stat="identity",width=1)+
  coord_polar(theta="y",direction=1)+
  scale_fill_brewer(palette ="Set3",direction = 1)+
  labs(x="",y="",fill="Type")+
  ggtitle(label ="test",subtitle=NULL)
p_pie

結合下圖結果可以看出坐標軸方向使順時針,而顏色設置scale_fill_brewer(palette ="Set3",direction = 1) 設定了第一個顏色填充到第一個因子對應的“A”上,這樣就反映出在圖片實際分布中數據和因子是反向對應的。雖然在dat數據框中設置是順序一致方向相同的對應,但圖片分布中會改變。

結合圖片中反向對應的關系,在A區塊上填充上對應的文字Num:90,它的坐標因該是 sum(dat$Num)-90 +90/2,如果是B區塊對應的應該坐標為sum(dat$Num)-90-34 +34/2

歸納為sum(dat$Num)-cumsum(dat$Num)+dat$Num/2 

sum(dat$Num)-cumsum(dat$Num)+dat$Num/2 
[1] 249.0 187.0 142.0  64.5   7.5

結合geom_text(aes(x,y))的位置設置,保證中間文字填寫不會出錯

p_pie=p_pie+
  geom_text(aes(x=1.2,y=sum(dat$Num)-cumsum(dat$Num)+dat$Num/2 ,label=as.character(dat[,2])),size=3)
p_pie

##########################如果最初構建有序因子的方向和實際數據的方向反向對應呢?

dat$type=factor(dat$type,levels = rev(dat$type),order=T)
dat$type

p_pie=ggplot(dat,aes(x="",y=dat[,2],fill=dat[,1]))+
  geom_bar(stat="identity",width=1)+
  coord_polar(theta="y",direction=1)+
  scale_fill_brewer(palette ="Set3",direction = 1)+
  labs(x="",y="",fill="Type")+
  ggtitle(label ="test",subtitle=NULL)
p_pie

結合圖片可以知道,第一個因子”E“對應了第一個顏色,不過可以看到,圖片顯示坐標中,"A"在前,而"A"在dat$Num中對應的數據也在前 90,這樣計算位置就會發生改變了,90-90/2,”B”將對應90+34-34/2

歸納為cumsum(dat$Num)-dat$Num/2

cumsum(dat$Num)-dat$Num/2
[1]  45.0 107.0 152.0 229.5 286.5

而且圖例也是反向的,需要結合guides(fill=guide_legend(reverse=T)) 并且希望第一個顏色對應最后一個因子“A",scale_fill_brewer(palette ="Set3",direction = -1)

dat$type=factor(dat$type,levels = rev(dat$type),order=T)
dat$type

p_pie=ggplot(dat,aes(x="",y=dat[,2],fill=dat[,1]))+
  geom_bar(stat="identity",width=1)+
  coord_polar(theta="y",direction=1)+
  scale_fill_brewer(palette ="Set3",direction = -1)+
  labs(x="",y="",fill="Type")+
  ggtitle(label ="test",subtitle=NULL)+
  guides(fill=guide_legend(reverse = T))+
  geom_text(aes(x=1.2,y=cumsum(dat$Num)-dat$Num/2 ,label=as.character(dat[,2])),size=3)

p_pie

以上是“如何使用ggplot2繪制餅圖pie”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大关县| 金湖县| 沅江市| 巴林左旗| 托克托县| 三门县| 兴化市| 大同县| 桦川县| 南乐县| 邓州市| 乌兰浩特市| 峨眉山市| 获嘉县| 永吉县| 和顺县| 布拖县| 南昌县| 西乡县| 古田县| 陇川县| 邹平县| 丽江市| 镇原县| 日照市| 禄丰县| 墨脱县| 新疆| 芦溪县| 永福县| 昂仁县| 景宁| 苏尼特右旗| 沈丘县| 大田县| 内黄县| 正阳县| 阿鲁科尔沁旗| 永兴县| 勃利县| 天镇县|