亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ggplot,構面,餅圖:在餅圖切片的中間放置文本

ggplot,構面,餅圖:在餅圖切片的中間放置文本

蕪湖不蕪 2019-10-11 10:59:48
我正在嘗試使用ggplot生成多面的餅圖,并遇到在每個切片的中間放置文本的問題:dat = read.table(text = "Channel Volume Cnt                         AGENT   high   8344                         AGENT medium   5448                         AGENT    low  23823                         KIOSK   high  19275                         KIOSK medium  13554                         KIOSK    low  38293", header=TRUE)vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +  geom_bar(stat="identity", position="fill") +  coord_polar(theta="y") +  facet_grid(Channel~.) +  geom_text(aes(x=factor(1), y=Cnt, label=Cnt, ymax=Cnt),             position=position_fill(width=1))輸出: 在此處輸入圖片說明geom_text為了將數字標簽放置在餅圖切片的中間,應調整的哪些參數?相關的問題是餅圖使其文本彼此重疊,但無法處理多面情況。更新:在上述問題中,按照保羅·海姆斯特拉的建議和方法,我將代碼更改如下:---> pie_text = dat$Cnt/2 + c(0,cumsum(dat$Cnt)[-length(dat$Cnt)])     vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +     geom_bar(stat="identity", position="fill") +     coord_polar(theta="y") +     facet_grid(Channel~.) +     geom_text(aes(x=factor(1), --->               y=pie_text,                    label=Cnt, ymax=Cnt), position=position_fill(width=1))正如我所期望的那樣,對文本coordiantes進行調整是絕對的
查看完整描述

3 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

要調整標簽文本相對于坐標的位置,可以使用的vjust和hjust參數geom_text。這將同時確定所有標簽的位置,因此可能不是您所需要的。


或者,您可以調整標簽的坐標。data.frame在平均Cnt坐標(label_x[i] = Cnt[i+1] + Cnt[i])處定義一個新標簽,以將標簽放置在該特定餅圖的中心。只是通過這個新data.frame來geom_text替換原來的data.frame。


此外,餅圖還存在一些視覺上的解釋缺陷。通常,我不會使用它們,尤其是在存在良好替代方案的地方,例如點圖:


ggplot(dat, aes(x = Cnt, y = Volume)) + 

  geom_point() + 

  facet_wrap(~ Channel, ncol = 1)

例如,從該圖中可以看出,Cnt對于Kiosk而言,其價格要高于對Agent而言,此信息在餅圖中會丟失。


查看完整回答
反對 回復 2019-10-11
  • 3 回答
  • 0 關注
  • 986 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號