我想做一个点图并在y轴上显示计数而不是明确的并且让ylim()动态调整
library(ggplot2)
d = data.frame( x = c(-.5,-.06,-.051,-.049,-.03,.02), color = c("red", "red", "red","green", "red","blue"))
set.seed(1)
#d= data.frame(x = rnorm(10))
binwidth= .025
p=ggplot(d, aes(x = x)) + geom_dotplot(binwidth = binwidth, method="histodot") + coord_fixed(ratio=binwidth)
p + ylim(0, ceiling(max(table(cut(p$data$x, (diff(range(p$data$x))/binwidth)))))*1.2)
有没有办法应用数据框“颜色”列中的着色?
当您更改binwidth变量时,绘图的大小也会更改。将binwidth变量更改为.1,您将看到绘图变大。有没有办法让情节大小相同?
谢谢
答案 0 :(得分:1)
我们可以用
确定这个数字p = ggplot(d, aes(x = x)) + geom_dotplot(binwidth = .05, method="histodot") + coord_fixed(ratio=0.05)
p + ylim(0, ceiling(max(table(cut(p$data$x, (diff(range(p$data$x))/0.05)))))*1.2)
查找值的范围
diff(range(p$data$x))
除以binwidth或coord_fixed比率以查找切割次数
diff(range(p$data$x))/p$coordinates$ratio
根据上面确定的削减数量将每个数字分配到一个bin中
cut(p$data$x, diff(range(p$data$x))/p$coordinates$ratio)
找到具有最大观察数的bin。这个数字可能与情节不完全匹配,但这应该不是问题。
ceiling(max(table(cut(p$data$x, (diff(range(p$data$x))/0.05)))))*1.2