2017-02-23 113 views
1

我無法解決這種奇怪的情況。某處我有錯誤或錯誤,但坐在一個半小時以上的時間無法處理。ggplot文字標籤恐怖餅圖

我:sta_df

   sta value 
1 IN_LIQUIDATION 29 
2  LIQUIDATED 47 
3  OPERATING 435 
4 TRANSFORMED  8 

sp <- ggplot(sta_df, aes(x="", y=value, fill=sta)) + 
    geom_bar(width = 1, stat = "identity", color = "black") + 
    coord_polar("y") + scale_fill_brewer(palette="Pastel2") + 
    geom_text(aes(x = seq(1.2,1.4,,4), label = percent(value/sum(value))), 
       position = position_stack(vjust = 0.5), size=5) 

和劇情有標籤錯誤的方向。

enter image description here

沒關係這個奇怪的圖片的字體。我試過使用許多不同的功能,而不是position_stack。例如:

geom_text(aes(x = rep(seq(0.9,1.4,,6),1), y = value/2 + c(0, cumsum(value)[-length(value)])

,但它並沒有幫助。此線程既不:wrong labeling in ggplot pie chart

當我想要反轉y=rev(value)傳說與數據不符。把方向1-1不超過扭轉所有。在geom_text中的反向值給出了類似於吃豆人的圖表。我已更新ggplot2

老實說,問題是因爲圖表開始逆時針繪製,雖然方向設置爲順時針,文本數字是正確的。而在data.frame中反轉數據並不會改變整個繪圖中的任何內容。對不起,我卡住了,但感覺解決方案就在那裏。

回答

1

當您在geom_label()中向您的標籤分配不同的x值時,會出現此問題。爲什麼?因爲你依靠position_stack()給你你的y值。但是當點不再共享相同的x時,他們就不會再被「堆疊」了。如果您想自定義x值,則需要計算您自己的y值,如此處所述(Showing data values on stacked bar chart in ggplot2)和此處(http://docs.ggplot2.org/current/geom_text.html)在頁面底部附近所述。順便說一句,我把coord_polar的問題都解決了,只是看着簡單的barplot版本。

無論如何,這裏是一個部分解決方案:

sta_df <- read.table(header=TRUE, 
text="  sta value 
IN_LIQUIDATION 29 
LIQUIDATED  47 
OPERATING  435 
TRANSFORMED  8") 

library(ggplot2) 
library(scales) 

sta_df$fraction = sta_df$value/sum(sta_df$value) 

sp <- ggplot(sta_df, aes(x="", y=value, fill=sta)) + 
     geom_bar(width=1, stat="identity", color="black",) + 
     scale_fill_brewer(palette="Pastel2") + 
     coord_polar(theta="y") + 
     geom_text(aes(x=1.4, label=percent(fraction)), 
       position=position_stack(vjust=0.5), size=4) 

ggsave("pie_chart.png", plot=sp, height=4, width=6, dpi=150) 

enter image description here

+0

確定。非常感謝!你確實回答了我的問題,但是這是變化x值最重要的問題,因爲文本是重疊的(在真實的圖表中,而不是這個例子)。計算這些值是非常棘手的,我需要一些提示,但可能在另一個威脅。謝謝。 –

+0

不客氣。祝你好運! – bdemarest