web-dev-qa-db-ja.com

Rバープロットですべてのxラベルを表示する方法は?

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

28
user2760

plot()呼び出し内で_las=2_を使用すると、すべてのラベルを表示できる場合があります。それ以外の場合は、_xaxt="n"_を使用してから、axis(1, at= ..., labels=...)を個別に呼び出してラベルを挿入する必要があります。

もう1つの方法は、最初に中間点を収集してから、xpdおよびsrtでtext()を使用して、テキストの回転の程度を制御することです。

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

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

29
42-

ベースRバープロットでラベルを回転させるには、gridBaseパッケージのビネットに記載されている例のいずれかを適応させることができます(ここでのように)。

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)

enter image description here

17
Josh O'Brien

ラベルが大きすぎる場合、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

labels too big

ラベルが回転して小さくなっているプロットの例

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

rotated and smaller

2
FistOfFury