web-dev-qa-db-ja.com

大量の連続X変数を含むgeom_boxplotを作成する方法

複数のカテゴリにわたるx軸の数値ビンと連続するy軸データを含むデータフレームがあります。最初は、x軸のビンを「因子」にして、融着データの箱ひげ図を作成することにより、箱ひげ図を作成しました。再現可能なデータ:

x <- seq(1,10,by=1)
y1 <- rnorm(10, mean=3)
y2 <- rnorm(10, mean=10)
y3<- rnorm(10, mean=1)
y4<- rnorm(10, mean=8)
y5<- rnorm(10, mean=12)
df <- data.frame(x,y1,y2,y3,y4,y5)
df.m <- melt(df, id="x")

因子としてx軸データを作成するための私のコード:

df.m $ x <-as.factor(df.m $ x)

私のggplot:

ggplot(df.m, aes(x=x, y=value))+
 geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.1)+
 theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

結果のプロット: The resulting plot

問題は、x軸が等間隔の因子として分類されているため、x軸の数値間隔を使用できないことです。 scale_x_continuousのようなものを使用して、軸の区切りと間隔を、たとえば1ごとの箱ひげ図ではなく、2の間隔に操作できるようにしたいのですが、x軸 "as.numeric "、私はすべてのデータの1つの箱ひげ図を取得します。

plot

X軸の数値プロパティを制御しながら、この連続的な箱ひげ曲線(最初の画像)を取得する方法についての提案はありますか?ありがとう!

17
AndMan21

これは、Googleに投稿した元のデータを使用する方法です。実際には、IMOの方がはるかに役に立ちました。

_ggplot(df, aes(x=CH, y=value,group=CH))+
  geom_boxplot(notch=FALSE, outlier.shape=NA, fill="red", alpha=0.2)+
  scale_x_log10()
_

したがって、@ BenBolkerが答えを削除する前に言ったように(??)、x変数(CH)を数値のままにして、aes(...)の呼び出しで_group=CH_を設定する必要があります。

しかし、実際のデータには別の問題があります。 CHの対数間隔は多かれ少なかれ1から10の間のようにポイント<1になります。ggplotはボックスをすべて同じサイズにしたいので、線形のx軸ではボックスの幅は線幅よりも小さく、ボックスはまったく表示されません。 X軸を対数スケールに変更すると、多かれ少なかれそれが修正されます。

25
jlhoward

xを要素にしないでください。値を関連付けるボックスを決定する要素であるgroupを美的にマッピングする必要があります。幸いにも、溶融後、これはvariable列です。

ggplot(df.m, aes(x = x, y = value, group = variable)) +
    geom_boxplot()

xはまだ数値であるため、特定のvariableレベル内で任意の値を指定すると、その場所に箱ひげ図が表示されます。または、x軸などを変換できます。

0
Gregor Thomas