2017-02-23 18 views
1

私はその奇妙な状況を解決することはできません。どこかでエラーやバグがありますが、1時間のうち3分の1を超える時間はそれに対処できませんでした。ggplotの円グラフhorror

は私が持っている: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値をカスタマイズしたい場合は、ページの下部近くにここに記載されているように(Showing data values on stacked bar chart in ggplot2)、ここでは(http://docs.ggplot2.org/current/geom_text.html)あなた自身のy値を計算する必要があります。ちなみに、私はcoord_polarを削除してすべてのトラブルシューティングを行いましたが、普通のバープロットバージョンを見るだけです。

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

OK:

はとにかく、ここでは部分的な解決策です。どうもありがとう!あなたは本当に私の質問に答えましたが、これはテキストが重複しているので(実際のチャートではなく、この例では)x値を変えるのに最も重要な問題です。これらの値を計算することは非常に難しいですが、私はいくつかのヒントが必要ですが、恐らく別の脅威が必要です。ありがとう。 –

+0

あなたは大歓迎です。がんばろう! – bdemarest