「ドットプロット」ヒストグラムに相当するggplot2は何ですか? バーの代わりに積み上げポイントを使用しますか? R のこのソリューションに似ています。
ggplot2でこれを行うことは可能ですか? 理想的には、スタックとして示されるポイントと、これらのポイントに「適合」する平滑化された線を示すかすかな線を使用します (これにより、ヒストグラムの形状が作成されます)。
「ドットプロット」ヒストグラムに相当するggplot2は何ですか? バーの代わりに積み上げポイントを使用しますか? R のこのソリューションに似ています。
ggplot2でこれを行うことは可能ですか? 理想的には、スタックとして示されるポイントと、これらのポイントに「適合」する平滑化された線を示すかすかな線を使用します (これにより、ヒストグラムの形状が作成されます)。
@joran が指摘したように、geom_dotplot を使用できます
require(ggplot2)
ggplot(mtcars, aes(x = mpg)) + geom_dotplot()
編集:( 有用なコメントを投稿に移動):
これは実際には密度の推定であるため、ラベル「カウント」は誤解を招く可能性があります。デフォルトでこのラベルを「密度」に変更したことをお勧めします。dotplot の ggplot 実装は、Leland Wilkinson のオリジナルのものに従っているため、それがどのように機能するかを明確に理解したい場合は、この論文を参照してください。
y 軸を実際にカウント、つまり「観測数」にする簡単な変換。ヘルプページには次のように書かれています。
x 軸に沿ってビニングし、y 軸に沿ってスタックする場合、ggplot2 の技術的な制限により、y 軸の数値は意味がありません。例の 1 つのように y 軸を非表示にするか、ドットの数に一致するように手動でスケーリングすることができます。
したがって、次のコードを使用して y 軸を非表示にすることができます。
ggplot(mtcars, aes(x = mpg)) +
geom_dotplot(binwidth = 1.5) +
scale_y_continuous(name = "", breaks = NULL)
@Waldir Leoncio の後者の方法を使用した正確なアプローチを紹介します。
library(ggplot2); library(grid)
set.seed(789)
x <- data.frame(y = sample(1:20, 100, replace = TRUE))
g <- ggplot(x, aes(y)) + geom_dotplot(binwidth=0.8)
g # output to read parameter
### calculation of width and height of panel
grid.ls(view=TRUE, grob=FALSE)
real_width <- convertWidth(unit(1,'npc'), 'inch', TRUE)
real_height <- convertHeight(unit(1,'npc'), 'inch', TRUE)
### calculation of other values
width_coordinate_range <- diff(ggplot_build(g)$panel$ranges[[1]]$x.range)
real_binwidth <- real_width / width_coordinate_range * 0.8 # 0.8 is the argument binwidth
num_balls <- real_height / 1.1 / real_binwidth # the number of stacked balls. 1.1 is expanding value.
# num_balls is the value of A
g + ylim(0, num_balls)