1

単一のデータフレームのサブセットから、R(ループ付き)の円グラフのセットを作成しています。素敵な円グラフが得られますが、すべての円グラフで同じ値に色を割り当てたいのに対し、各円グラフでは常に同じ順序で色が割り当てられています。

私のコードは:

for (i in 1:length(voisins)) {                
    y <- subset(zz, Destination==voisins[i])    
    pie(y$pc,labels=y$Names, col=terrain.colors(nrow(y)) , main=c(y$country[1])) 

それぞれに同じ色にしたいのですがy$Names

ここに画像を入れることは許可されていないので、そこに入れます:http: //cl.ly/image/080t2Q1v1q3V

同じ領域が同じ色であれば読みやすくなります!これを達成する方法はありますか?

解決 :

アルン、あなたの答えに感謝しますが、残念ながら、これは私が望む結果を生み出しません。おそらく私はそれを十分に明確に説明していませんでした。ggplotはより優れたグラフィックパッケージであると信じており、すぐにその使用方法を学びますが、今のところ時間がないので、とにかくあなたの答えは私を正しい方向に導いてくれます。私は解決策を見つけました:実際には、例でより大きな「t」(より多くの行を含む)を作成し、そのサブセットを取得すると、t1、t2、t3、...が小さくなり、常に同じt$idになるとは限りません。したがって、t1ではid =(2,4,9,3)、t2ではid =(4,6,3)というようになります。色は常に同じ順序で割り当てられていることがわかります。つまり、t1 2 =赤、4 =緑、9 =青、3 =紫、t2 4 =赤、6 =緑、3=青になります。したがって、色はパイごとに異なり、常に2 =赤、4 =緑、3 =青、9=バイオレット。私が見つけた解決策は、t $ idに従ってカラー列をtにマージし、それをサブセットt1、t2、t3、...に保持し、col = t1 $ color、col = t2$colorなどを設定することです。 pieコマンドで。ようやく簡単になりましたが、自動解決を望んでいたので、後でPaulの解決策を見ることにします。ディディエ

4

1 に答える 1

4

最初に、ピチャートには大きな知覚上の問題があるため、最初から悪い考えであると述べさせてください。たとえば、ここを参照してください。

次に、問題を取り戻すためggplotに、より具体的にはファセットを使用します。最初に1つの円グラフを作成します。

pie <- ggplot(mtcars, aes(x = factor(1), fill = factor(cyl))) +
 geom_bar(width = 1)
pie + coord_polar(theta = "y")

ここに画像の説明を入力してください

変数のレベルごとに円グラフを作成するには、たとえば、変数のfacet_wrap一意のレベルごとに使用できます。gearmtcars

pie + coord_polar(theta = "y") + facet_wrap(~ factor(gear))
于 2013-01-15T15:39:17.597 に答える