17

こんにちは、私は本当にこれをたくさんグーグルで検索しましたが、何の喜びもありませんでした。参考になるサイトがあれば教えていただけると嬉しいです。極座標に関する Hadley のドキュメントを理解するのに苦労しており、円/ドーナツ グラフは本質的に悪と見なされていることを知っています。

そうは言っても、私がやろうとしていることは

  1. ここに示すtikz リング チャートのようなドーナツ/リング チャート (中央が空の円) を作成します。
  2. alpha=0.52 番目の (比較可能な) 変数を示す2 番目のレイヤーの円を上に (ある程度) 追加します。

なんで?財務情報を表示したいと考えています。最初のリングはコスト (内訳) で、2 番目のリングは総収入です。次に、+ facet=periodレビュー期間ごとに追加して、収益と費用の両方の傾向と両方の成長を示します。

どんな考えでも大歓迎です

注: これが試行された場合に MWE が必要な場合は、完全に恣意的に

donut_data=iris[,2:4]
revenue_data=iris[,1]
facet=iris$Species

それは私がやろうとしていることと似ています..ありがとう

4

2 に答える 2

40

あなたの質問に対する完全な答えはありませんが、ggplot2.

library(ggplot2)

# Create test data.
dat = data.frame(count=c(10, 60, 30), category=c("A", "B", "C"))

# Add addition columns, needed for drawing with geom_rect.
dat$fraction = dat$count / sum(dat$count)
dat = dat[order(dat$fraction), ]
dat$ymax = cumsum(dat$fraction)
dat$ymin = c(0, head(dat$ymax, n=-1))

p1 = ggplot(dat, aes(fill=category, ymax=ymax, ymin=ymin, xmax=4, xmin=3)) +
     geom_rect() +
     coord_polar(theta="y") +
     xlim(c(0, 4)) +
     labs(title="Basic ring plot")

p2 = ggplot(dat, aes(fill=category, ymax=ymax, ymin=ymin, xmax=4, xmin=3)) +
     geom_rect(colour="grey30") +
     coord_polar(theta="y") +
     xlim(c(0, 4)) +
     theme_bw() +
     theme(panel.grid=element_blank()) +
     theme(axis.text=element_blank()) +
     theme(axis.ticks=element_blank()) +
     labs(title="Customized ring plot")


library(gridExtra)
png("ring_plots_1.png", height=4, width=8, units="in", res=120)
grid.arrange(p1, p2, nrow=1)
dev.off()

ここに画像の説明を入力

考え:

  1. 適切に構造化されたサンプル データを投稿すると、より有用な回答が得られる場合があります。データセットからいくつかの列を使用することについて言及しましたがiris(良いスタートです)、そのデータを使用してリングプロットを作成する方法がわかりません。たとえば、リンクしたリング プロットは、いくつかのカテゴリの比率を示していますが、どちらiris[, 2:4]もカテゴリではありませんiris[, 1]
  2. 「上に2番目のレイヤーの円を追加」したい:最初のリングの上に2番目のリングを直接重ねるということですか?それとも、2 番目のリングを最初のリングの内側または外側に配置しますか? 次のようなもので2番目の内部リングを追加できますgeom_rect(data=dat2, xmax=3, xmin=2, aes(ymax=ymax, ymin=ymin))
  3. data.frame に という名前の列がある場合、ファセットにperiod使用できますfacet_wrap(~ period)
  4. 最も簡単に使用するggplot2には、データを「長い形式」にする必要があります。melt()パッケージからreshape2のデータは、データの変換に役立つ場合があります。
  5. 使用しないことにした場合でも、比較のためにいくつかの棒グラフを作成します。たとえば、次を試してください。 ggplot(dat, aes(x=category, y=count, fill=category)) + geom_bar(stat="identity")
于 2012-11-29T22:36:17.143 に答える