1. ホーム
  2. r

ggplot2を使って、軸に切れ目を入れることはできますか?

2023-11-10 14:21:56

質問

ある値が他の値よりずっと大きい棒グラフを作りたいのですが、Y軸を不連続にする方法はありますか?不連続なY軸を持つ方法はありますか?私のデータは次のとおりです。

df <- data.frame(a = c(1,2,3,500), b = c('a1', 'a2','a3', 'a4'))

p <- ggplot(data = df, aes(x = b, y = a)) + geom_bar() 
p <- p + opts(axis.text.x=theme_text(angle= 90, hjust=1))  + coord_flip()
p

<イグ

軸を1-10、次に490-500にする方法はありますか?データをプロットする他の方法は思いつきません(変換するのは別として、やりたくはないのですが)。

[2019-05-06の編集】です。]

8年後、上記のコードはバージョン3.1.1で動作するように修正する必要があります。 ggplot2 で動作するように修正する必要があります。

library(ggplot2)
ggplot(df) + 
  aes(x = b, y = a) +
  geom_col() +
  coord_flip()

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

他の場所で述べたように、これは ggplot2 がうまく処理できるものではありません。なぜなら、壊れた軸は一般的に疑わしいと考えられているからです。

他の戦略は、しばしばこの問題に対するより良い解決策とみなされます。Brian はいくつか言及しました (ファセット化、異なる値のセットに焦点を当てた 2 つのプロット)。人々があまりにも頻繁に見過ごす他の 1 つのオプションは、特に Barcharts の場合ですが、グラフを表示するために テーブル :

実際の値を見ると、500は他の値の違いを見えなくしていません! 何らかの理由で、表はデータの視覚化技術として十分に評価されていません。データには多くのカテゴリがあり、表では扱いにくくなることに異議を唱えるかもしれません。もしそうなら、棒グラフも同様に、理にかなっていないほど多くの棒を持つことになりそうです。

そして、私はテーブルについて議論しているわけではありません。 すべて を主張するものではありません。しかし、比較的少数のバーでバーチャートを作成する場合は、間違いなく考慮すべきものです。また、大量のバーを持つバーチャートを作成している場合は、いずれにせよ再考する必要があるかもしれません。

最後に、また axis.break 関数の中で plotrix 関数で、壊れた軸を実装しています。しかし、私が調べたところでは、軸のラベルと位置を自分で手作業で指定する必要があるようです。