76

値の1つが他のすべての値よりもはるかに大きい棒グラフを作成したいと思います。不連続な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年後、ggplot2同じチャートを作成するには、バージョン3.1.1で動作するように上記のコードを修正する必要があります。

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

9 に答える 9

50

他の場所で述べたようggplot2に、壊れた軸は一般的に疑わしいと見なされるため、これはうまく処理できるものではありません。

他の戦略は、多くの場合、この問題に対するより良い解決策と見なされます。Brian がいくつか言及しました (ファセット、異なる値のセットに焦点を当てた 2 つのプロット)。特に棒グラフの場合、人々が見落としがちなもう 1 つのオプションは、テーブルを作成することです。

ここに画像の説明を入力

実際の値を見ると、500 は他の値の違いを覆い隠しません! 何らかの理由で、テーブルはデータの視覚化手法として十分に尊重されていません。あなたのデータには非常に多くのカテゴリがあり、表では扱いにくいことに反対するかもしれません。その場合、棒グラフの棒が多すぎて適切ではない可能性があります。

そして、私は常にテーブルについて議論しているわけではありません。しかし、バーが比較的少ない棒グラフを作成している場合は、これらを考慮する必要があります。また、大量のバーを含むバーチャートを作成している場合は、とにかく再考する必要があるかもしれません.

最後に、壊れた軸を実装するパッケージのaxis.break機能もあります。plotrixただし、私が収集したものから、軸ラベルと位置を手動で指定する必要があります。

于 2011-08-25T18:06:33.417 に答える
27

いいえ、ggplot を使用していません。http://groups.google.com/group/ggplot2/browse_thread/thread/8d2acbfc59d2f247のスレッドの議論を参照してください。Hadley はそれが不可能な理由を説明していますが、提案された代替案 (ファセット プロット、すべてのデータを含むプロット、1 つのプロット特定の領域を拡大しています)。

于 2011-08-25T17:50:19.600 に答える
26

ggplotではなく、plotrixを使用すると、簡単にそれを行うことができます。

library(plotrix)
gap.barplot(df$a, gap=c(5,495),horiz=T)
于 2012-06-06T13:31:29.360 に答える
1

R にすぐに使えるものがあるとは思えませんが、データを一連の 3D 部分キューブとして表示することはできます。500 はわずか 5*10*10 であるため、適切にスケーリングされます。正確な値はラベルである可能性があります。

これはおそらく、何らかの理由でグラフィック表現が必要な場合にのみ使用する必要があります。

于 2011-09-30T23:39:12.847 に答える
0

1 つの戦略は、軸を変更してログ スケールをプロットすることです。このようにして、指数関数的に高い値を 10 分の 1 に減らすことができます。

于 2018-10-20T14:21:33.170 に答える