我正在嘗試使用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而言,此信息在餅圖中會丟失。
- 3 回答
- 0 關注
- 986 瀏覽
添加回答
舉報
0/150
提交
取消