1

データをグループ化しました。各バーのサンプル サイズは、0 サンプルから >600 までの範囲で異なります。異なるデータに対してこの同じグラフのパネルを 2 つ追加したいのですが、単純に各バーの上にサンプル サイズを書いた場合、非常に混雑して読みにくくなります。

2 番目の軸を作成し、サンプル サイズを棒グラフ上にドット プロットとしてプロットすることにしました。ただし、取得できないため、ドットがバーの上に整列します。バーの幅と、グループ化されたバーとバーのセットの間の間隔を調整してみました。また、ドット プロットに設定された間隔は、これらの幅/間隔と同じにする必要があります (頂点を参照)。しかし、明らかにそうではありません (下のリンクの写真を参照)。誰が何がうまくいかないのか考えていますか? 修正はありますか、それともサンプル サイズを伝える別の方法を試す必要がありますか?

これは、図を描画するために使用しているコードの簡素化されたバージョンと、現在の外観の図です。

#From https://statisticsglobe.com/r-draw-plot-with-two-y-axes
par(mar = c(5, 4, 4, 4) + 0.3)               # Additional space for second y-axis
barplot(t(mxAe), beside=T,
    space=c(0,0.75), width=c(0.75,0.75),     # Spacing of bars
    las=2, col= c("#DDCC77", "#44AA99") , 
    ylim=c(0,100) , 
    xlim=c(0.5,45),
    main="")                                 
par(new = TRUE)                              # Add new plot
plot(x=mxAe2$place,y=mxAe2$Tot, pch = 16,
 cex= 0.5,  col = 1, axes = FALSE, 
 xlab = "", ylab = "")                       # Create second plot without axes
axis(side = 4, at = pretty(range(0,800)))    # Add second axis
abline(v=verts, col="gray30", lty=3)         # Add vertical lines along dot plot points

verts <- c(1,1.75,3,3.75,5,5.75,7,7.75,9,9.75,11,11.75, 
       13, 13.75,15,15.75,17,17.75, 19, 19.75,21,21.75,
       23,23.75,25,25.75,27,27.75,29,29.75,31,31.75,
       33,33.75,35,35.75,37,37.75,39,39.75,41,41.75,43,43.75) #Position of dots

 

ここに画像の説明を入力

再現可能なコード:

df_mxAe <- data.frame(group1 <- c(9,0,30),group2 <- c(5,20,90))
dotx <- c(1.375,2.125,3.625,4.375,5.875,6.625)
doty <- c(200, 400, 0, 600, 50, 100)
par(mar = c(5, 4, 4, 4) + 0.3)                  # Additional space for second y-axis
barplot(t(df_mxAe), beside=T, space=c(0,1), width=c(0.75,0.75),
    las=2 ,
    col= c("#DDCC77", "#44AA99") , 
    ylim=c(0,100),
    xlim=c(0.5,6.625),
    main="")                                    # Create first plot
par(new = TRUE)                                 # Add new plot
plot(x=dotx,y=doty, pch = 18,
 cex= 0.5,  col = 1, axes = FALSE, xlim=c(0.5,6.625),
 xlab = "", ylab = "")                          # Create second plot without axes
axis(side = 4, at = pretty(range(0,800)))       # Add second axis
abline(v=dotx, col="gray30", lty=3)             # Add vertical lines along dot plot points
4

1 に答える 1