5

すべて同じバー幅を持つバープロットの (1 行、3 列) 配列を作成しようとしています。

3 つの棒グラフはすべて観測数が異なるため、棒の幅はプロットごとに異なります (つまり、観測数が最も多いプロットの棒は最も狭くなり、観測数が最も少ないプロットの棒は最も広くなります)。barplot {graphics} R私はドキュメントからそれを理解しています、

「単一の値を指定しても、xlimが指定されていない限り、目に見える効果はありません」

ただし、私x labelsは文字列なので、指定方法がわかりませんxlim。プロットの幅が異なっていてもかまいませんが、これを何らかの方法で指定する必要がありますか?

ここにいくつかの偽のデータと私が使用しているコードがあります...助けてくれてありがとう.

height4plot1 <- c(1,6,9,2,3,10,7,15)
names4plot1 <- c("P1","P2","P3","P4","P5","P6","P7","P8")

height4plot2 <- c(5,4,10,2)
names4plot2 <- c("M1","M2","M3","M4")

height4plot3 <- c(4,12)
names4plot3 <0 c("U1","U2")

par(mfrow=c(1,3),
    mar=c(10,5,2,1),
    cex.axis=0.7,
    mgp=c(3,0.5,0))
barplot(height4plot1,
    names.arg=names4plot1,
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    ylab="YLAB",
    ylim=ylim,
    plot=TRUE,
    main="PLOT1",
    width=1)
barplot(height4plot2,
    names.arg=names4plot2,
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    ylim=ylim,
    plot=TRUE,
    main="PLOT2",
    width=1)
barplot(height4plot3,
    names.arg=names4plot3,
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    ylim=ylim,
    plot=TRUE,
    main="PLOT3",
    width=1)
4

2 に答える 2

1

私はあなたの再現不可能な例を私のものに置き換えましたが、うまくいくようです。barplot の xlim 引数は、1 からグループ数までの範囲の整数値です。

tN <- table(Ni <- stats::rpois(100, lambda=5))
opar <- par(mfrow=c(1,3),
    mar=c(10,5,2,1),
    cex.axis=0.7,
    mgp=c(3,0.5,0))
barplot(tN[1:3],
   xlim=c(1, length(tN) ), 
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    ylab="YLAB",
    plot=TRUE,
    main="PLOT1",
    width=1)
barplot(tN[1:4],
   xlim=c(1, length(tN) ), 
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    plot=TRUE,
    main="PLOT2",
    width=1)
barplot(tN[1:5],
   xlim=c(1, length(tN) ), 
    las=3,
    axes=TRUE,
    axisnames=TRUE,
    plot=TRUE,
    main="PLOT3",
    width=1)    
par(opar)
于 2012-11-12T20:13:42.557 に答える
1

などの変数がないheight4plot1と、コードや変更をテストするのが難しくなりますが、いくつかの可能性があります。

width=0.8プロットごとに指定でき、xlim=c(0,maxnum)ここで maxnum は異なるプロットのバーの最大数です。これにより、小さい棒グラフのそれぞれに空のセクションが残ります。

高さの短いベクトルをNAすべて同じ長さになるまでパディングできます (これでも空のセクションが得られます)。

3 つのベクトルを連結して単一の箱ひげ図を作成し、3 つのグループを異なる色で区別して区別することができます。このabline関数を使用して、グループ間に分割線を追加できます (また、spacebarplot の引数を参照するか、分割線として 'NA' を含めて、グループ間にスペースを増やします)。戻り値を使用して、各グループの上にタイトルを配置できます。

layout3 つのプロット領域を異なる幅に設定する代わりにを使用できますparが、幅の正確な比率を取得して正確に同じサイズのバーを提供することは簡単ではありません (ただし、試行錯誤で近づくことができます)。本当にこのルートが必要な場合はgrconvertXoptim役立つかもしれません。

上記の2番目のオプションをお勧めします。

于 2012-11-12T20:08:30.847 に答える