複数のカテゴリにわたる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))
結果のプロット: :
問題は、x軸が等間隔の因子として分類されているため、x軸の数値間隔を使用できないことです。 scale_x_continuousのようなものを使用して、軸の区切りと間隔を、たとえば1ごとの箱ひげ図ではなく、2の間隔に操作できるようにしたいのですが、x軸 "as.numeric "、私はすべてのデータの1つの箱ひげ図を取得します。
X軸の数値プロパティを制御しながら、この連続的な箱ひげ曲線(最初の画像)を取得する方法についての提案はありますか?ありがとう!
これは、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軸を対数スケールに変更すると、多かれ少なかれそれが修正されます。
x
を要素にしないでください。値を関連付けるボックスを決定する要素であるgroup
を美的にマッピングする必要があります。幸いにも、溶融後、これはvariable
列です。
ggplot(df.m, aes(x = x, y = value, group = variable)) +
geom_boxplot()
x
はまだ数値であるため、特定のvariable
レベル内で任意の値を指定すると、その場所に箱ひげ図が表示されます。または、x
軸などを変換できます。