1. ホーム
  2. r

[解決済み] バープロットでX軸にラベルを書くとき、名前が重複している場合はどうすればよいですか?

2022-02-12 23:26:03

質問

簡単な棒グラフを作ろうとしているのですが、X軸の名前が重複してしまうという問題があります。そのため、X軸に名前を書こうとすると、完全な文字列が表示されません。次のようなデータがあります。

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()

しかし、なかなかうまくいきません。

よろしくお願いします。

どのように解決するのですか?

いいえ。 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 で、バーのラベルを供給する。これは ?barplot には、こう書かれています。

<ブロッククオート

names.arg: 各バーまたはグループの下にプロットされる名前のベクトル。 バーです。 この引数が省略された場合、名前は を使用します。 names の属性は height これがベクトルである場合。 行列の場合は列名。

これは、以下の場合のデフォルトの動作を説明するものです。 names.arg が与えられない場合、プロットされたオブジェクトから名前を取得することになります。どの使い方が一番便利かは、主に好みの問題でしょう。行・列・名前を指定しない方が若干コードが速くなるかもしれませんが、Rの関数の多くは、行・列・名前を指定するために names 属性(または類似の、例えば行名)をオブジェクトから直接取得できるので、プロットや結果のラベリングなどのためにラベルを提供し続ける必要がありません。