5

カテゴリ データに基づいて 3D 棒グラフを作成しようとしましたが、方法が見つかりませんでした。

説明するのは簡単です。次のデータ例を考えてみましょう (実際の例はもっと複雑ですが、これに縮小されます)、収入と年齢 (どちらもカテゴリ データ) で分類された何かが発生する相対的なリスクを示しています。

これを 3D 棒グラフで表示したい ( http://demos.devexpress.com/aspxperiencedemos/NavBar/Images/Charts/ManhattanBar.jpgと同様の考え方)。scatterplot3d パッケージを見ましたが、これは散布図専用であり、カテゴリ データをうまく処理できません。3D グラフを作成できましたが、3D 棒ではなく点が表示されます。私が必要とするグラフの種類はありません。rgl パッケージも試しましたが、うまくいきませんでした。私は1時間以上グーグルで検索してきましたが、解決策が見つかりませんでした. 私は ggplot2 - Elegant Graphics for Data Analysis 本のコピーも持っていますが、ggplot2 にはこの種のチャートはありません。

使用できる別のフリーウェア アプリはありますか? OpenOffice 3.2 にもこのチャートはありません。

ヒントをありがとう。

Age,Income,Risk
young,high,1
young,medium,1.2
young,low,1.36
adult,high,1
adult,medium,1.12
adult,low,1.23
old,high,1
old,medium,1.03
old,low,1.11
4

3 に答える 3

7

R で 3D グラフを作成する方法はわかりませんが、このデータを表すには、3D 棒グラフよりも優れた方法があります。3D チャートでは、バーの高さが 3D パースペクティブによって歪められるため、解釈が難しくなります。この例のグラフでは、2004 年のウィスコンシンが 2001 年のウィスコンシンよりも本当に高いのか、それとも視点の効果なのかを判断するのは困難です。また、高いとすればどのくらいですか?

との両方AgeIncome意味のある順序があるため、折れ線グラフを作成しても問題はありません。ggplot2コード:

ggplot(data, aes(Age, Risk, color = Income))+
  geom_line(aes(group = Income))

または、ヒートマップを作成することもできます。

ggplot(data, aes(Age, Income, fill = Risk)) +
  geom_tile()
于 2010-07-25T03:53:00.020 に答える
1

他の人が示唆したように、これを提示するためのより良い方法がありますが、あなたが持っていたものに似たものが必要な場合は、これを開始する必要があります.

df <-  read.csv(textConnection("Age,Income,Risk
young,high,1
young,medium,1.2
young,low,1.36
adult,high,1
adult,medium,1.12
adult,low,1.23
old,high,1
old,medium,1.03
old,low,1.11
"))
df$Age <- ordered(df$Age, levels=c('young', 'adult', 'old'))
df$Income <- ordered(df$Income, levels=c('low', 'medium', 'high'))
library(rgl)
plot3d(Risk ~ Age|Income, type='h', lwd=10, col=rainbow(3))

これにより、平らな長方形が生成されます。見栄えの良いバーを作成する例については、 を参照してくださいdemo(hist3d)

于 2010-07-25T08:52:39.363 に答える
0

ここで開始点を見つけることができますが、投稿したようなプロットを得るには、さらに行といくつかの長方形を追加する必要があります.

于 2010-07-25T07:44:56.673 に答える