2011-09-28 6 views
13

私は単純なバープロットを作ろうとしていますが、x軸に名前が重複しているという問題があります。ですから、私がx軸に名前を書き込もうとしているとき、完全な文字列を表示しません。私は、データ 名前が重複しているx軸のbarplotにラベルを書き込む方法は?

x <- c(1.8405917,0.3265986,1.5723623,464.7370299,0.0000000,3.2235716, 
     3.1223534, 7.0999787, 1.7122258,3.2005524,3.7531266,469.4436828) 

を以下していると私はbarplot

barplot(x,xlab=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
       "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 

を使用しています。しかし、それは動作しません。私も使用しました

axis() 

しかし、それはうまくいきません。

ありがとうございます。

+0

は、あなたが任意のエラーメッセージを取得しましたか? –

答えて

20

いいえ、xlabは、個々のバーにラベルを付けるためではなく、プロットのx軸全体にラベルを付けるためのものです。

barplot()は、プロットされたベクトルの名前(または名前のセットに派生できるもの)の名前から棒のラベルを取ります。

> names(x) <- c("AA/AA", "AA/CC", "AA/AC", "AA/NC", "CC/AA", "CC/CC", "CC/AC", 
+    "CC/NC", "AC/AA", "AC/CC", "AC/AC", "AC/NC") 
> barplot(x) 
> ## or with labels rotated, see ?par 
> barplot(x, las = 2) 

編集: @Aaronは述べているように、barplot()もバーのラベルを供給するnames.argを持っています。

names.arg: バーの各バーまたはグループの下にプロットする名前のベクトルを:これは?barplotが言っているものです。この引数を省略すると、 のnames属性がheight(ベクトルの場合)、 またはそれが行列の場合は列名になります。

names.argが指定されていない場合のデフォルトの動作(プロットされたオブジェクトから名前を取得する)について説明します。どのような使い方が最も有用かは、主に味の問題です。行/列/名前を持たない場合は、コードの速度が若干上がる可能性がありますが、Rの関数の多くは、オブジェクトから直接names属性(または行名など)を直接取得するため、プロット/ラベル付けのラベル結果など

+0

+1完璧な答え。 – Aaron

10

xlabは、names.argである必要があります。詳細については、?barplotを参照してください。

+0

+1 'names.arg'引数に注目してください。 –

2

axis()を使用する方法は、中点を取り込むことです。これは、バープロット関数が返すものです。 ?barplotを参照してください:

mids <- barplot(x, xlab="") 

axis(1, at=mids, labels=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC", 
          "CC/AC","CC/NC","AC/AA","AC/CC","AC/AC","AC/NC"), 
     las=3) 
3

はこれを試してみてください:

barplot(x, cex.names=0.7, 
     names.arg=c("AA/AA","AA/CC","AA/AC","AA/NC","CC/AA","CC/CC","CC/AC", 
        "CC/NC","AC/AA","AC/CC","AC/AC","AC/NC")) 
関連する問題