0

5 年間にわたる 2 つの変数 (発生率 (0 ~ 100) と重大度 (0 ~ 5)) の観測値を含むデータ セットがあります。これは次のようになります。

cbb.incidence   avg.severity    Year
1   86.666667   2.0333333   2009
2   83.333333   1.8666667   2009
3   20.000000   1.2000000   2009
4   26.666667   1.2666667   2010
5   86.666667   1.9000000   2010
6   86.666667   1.8666667   2010
7   86.666667   2.0333333   2011
8   83.333333   1.8666667   2011
9   20.000000   1.2000000   2012
10  26.666667   1.2666667   2012
11  86.666667   1.9000000   2013
12  86.666667   1.8666667   2013

私が取得したいのは、変数ごとに 1 つずつ、各年に 2 つのボックス プロットを含む図です。ここでスタック オーバーフローに関するまったく同じ質問を見つけました: Plot multiple boxplot in one graph

したがって、例で説明されているようにデータを「溶かし」、次に説明されているようにプロットします。

meltedData<-melt(incidence_all, id.var='Year')
ggplot(data=meltedData, aes(x=Year, y=value)) +
geom_boxplot(aes(fill=variable))

データは正しい形式のように見える 溶けたデータは次のようになります (これはサブセットで、2000 行以上あります)。

     Year  variable       value
1017 2009  avg.severity   1.5333333
1018 2009  avg.severity   2.1333333
1019 2009  avg.severity   2.0666667
1020 2009  avg.severity   2.0000000
1021 2009  avg.severity   2.0666667
1022 2009  avg.severity   1.6333333
1023 2009  avg.severity   1.5666667
1024 2009  cbb.incidence  16.777775
1025 2009  cbb.incidence  35.888865

上記のコードを参照してください

R ウィザードの 1 人、私が間違っていることを教えてくれませんか?

また、2 つの変数が非常に異なるスケール (発生率は 0 ~ 100、重大度は 1 ~ 5) であることは既にわかっているため、単純に両方を同じ y 軸スケールでプロットすると、小さい値は読み取り不能になります。 . 左右に 1 つずつ、2 つの y 軸が必要です。各変数は異なる y 軸にスケーリングされます。この機能を使用した箱ひげ図の例は見たことがありません。できればggplotで、誰かがこれにアプローチする方法を推奨できますか?

ありがとうございました!!

4

1 に答える 1

2

最初に年を因数にしてみてください:

incidence_all$Year=factor(incidence_all$Year)

meltedData<-melt(incidence_all, id.var="Year")
ggplot(data=meltedData, aes(x=Year, y=value)) +
  geom_boxplot(aes(fill=variable))

次のようなものが得られます。 ここに画像の説明を入力

2 番目の質問については、1 つの代替方法として、再スケーリングを行います。

incidence_all$avg.severitys=incidence_all$avg.severity*100/max(incidence_all$avg.severity)

meltedData<-melt(incidence_all[,-2], id.var="Year")
ggplot(data=meltedData, aes(x=Year, y=value)) +
  geom_boxplot(aes(fill=variable))

ここに画像の説明を入力

于 2015-10-13T01:27:33.210 に答える