40

これは基本的な質問ですが、答えが見つかりません。1つのパネル内に約9つの棒グラフを生成しており、各棒グラフには約12の棒があります。入力で12個のラベルすべてを提供していますが、Rは代替バーのみに名前を付けています。これは明らかに、変更が必要なRのデフォルト設定が原因ですが、見つかりません。

4

4 に答える 4

34

las=2通話中に使用すると、すべてのラベルを表示できる場合がありplot()ます。この引数と以下で説明する他の引数について説明し?parます。ここでは、デバイスをプロットするためのグラフィックパラメータを設定します。これにより、テキストが90度回転します。それ以外の場合は、xaxt="n"(目盛りとラベルを抑制するために)を使用してから、への別の呼び出しでラベルを配置する必要がありますaxis(1, at= <some numerical vector>, labels=<some character vector>)

#  midpts <- barplot( ... ) # assign result to named object
axis(1, at = midpts, labels=names(DD), cex.axis=0.7) # shrinks axis labels

別の方法は、最初に中点を収集し、次に= TRUEを使用text()xpdて、テキストをプロット領域の外側に表示しsrt、テキストの回転の程度を制御する名前付き引数としてテキストの回転の角度にすることです。

text(x=midpts, y=-2, names(DD), cex=0.8, srt=45, xpd=TRUE)

y値は、プロットされた領域の座標を使用して選択する必要があります。

有用なコメントのコピー:これらの引数が何をするのかわからない将来の読者のために:las=2はラベルを反時計回りに90度回転させます。さらに、フォントを縮小する必要がある場合は、cex.names=.5を使用してサイズを縮小できます。

于 2012-04-02T18:56:18.860 に答える
18

ベースR棒グラフで回転したラベルを取得するには、(ここで行うように)gridBaseパッケージのビネットに示されている例の1つを適応させることができます。

library(grid)
library(gridBase)

## Make some data with names long enough that barplot won't print them all
DD <- table(rpois(100, lambda=5))
names(DD) <- paste("long", names(DD), sep="_")

## Plot, but suppress the labels
midpts <- barplot(DD, col=rainbow(20), names.arg="")

## Use grid to add the labels    
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)

grid.text(names(DD),
    x = unit(midpts, "native"), y=unit(-1, "lines"),
    just="right", rot=50)

popViewport(3)

ここに画像の説明を入力してください

于 2012-04-02T19:23:06.823 に答える
8

ラベルが大きすぎる場合、Rはすべてのバーにラベルを付けません。

プロット関数にlas=2引数を渡して、ラベルを垂直方向に回転させることをお勧めします。

それでもラベルが大きすぎる場合は、cex.names=.5引数を使用してフォントを縮小してみてください。

プロットのサンプルデータ

sample_curve <- c(2.31,2.34,2.37,2.52,2.69,2.81,2.83,2.85,2.94, 3.03,  3.21,  3.33)   # create a sample curve
names(sample_curve)<-c("1 MO","2 MO","3 MO","6 MO","1 YR","2 YR","3 YR","5 YR","7 YR","10 YR","20 YR","30 YR") # label the curve

ラベルが大きすぎるプロットの例

barplot(sample_curve) # labels too big for the plot

ラベルが大きすぎます

ラベルを回転させて小さくしたプロットの例

barplot(sample_curve, las=2, cex.names=.5) # lables are rotated and smaller, so they fit

回転して小さく

于 2018-12-03T13:44:02.230 に答える
0

プロットする前にbarplot()

とマージン値を使用してマージンを増やすことができpar()ます(プロットには4つのマージンがあります)mar = c(v1,v2,v3,V4)

par(mar=c(10,4,4,4))

例として:

par(mar=c(10,4,4,4))
barplot(height=c(1,5,8,19,7),
        names.arg=c("very long label 1","very long label 2",
                    "very long label 3","very long label 4",
                    "very long label 5"), las=2 )

非常に長いラベル棒グラフ

于 2021-03-11T15:04:22.743 に答える