什么是ggplot2相当于"dotplot"直方图?使用堆积点而不是条形图?与R中的此解决方案类似:
是否可以在ggplot2中执行此操作?理想情况下,显示为堆栈的点和显示平滑线"适合"这些点的微弱线(这将形成直方图形状.)
是的,ylim()
点图(BTW,它可能会做你能想象到的所有情节,看看http://docs.ggplot2.org/current/index.html).基本上,你想要的是这个:
library(ggplot2)
set.seed(789); x <- data.frame(y = sample(1:20, 100, replace = TRUE))
ggplot(x, aes(y)) + geom_dotplot()
Run Code Online (Sandbox Code Playgroud)
为了使其行为像一个简单的dotplot,我们应该这样做:
ggplot(x, aes(y)) + geom_dotplot(binwidth=1, method='histodot')
Run Code Online (Sandbox Code Playgroud)
你应该得到这个:
要解决密度问题,您必须添加另一个术语ggplot() + geom_dotplot() + ylim()
,以便您的绘图调用将具有该表单ylim(0, A)
更具体地说,您将写入A
,ylim()
计算1.00密度所需的堆叠点数将在何处.在上面的示例中,您可以做的最好是看到7.5点达到0.50密度标记.从那里,你可以推断15点将达到1.00.
所以你的新电话看起来像这样:
ggplot(x, aes(y)) + geom_dotplot(binwidth=1, method='histodot') + ylim(0, 15)
Run Code Online (Sandbox Code Playgroud)
哪个会给你这个:
通常,这种眼球估计适用于点图,但当然您可以尝试其他值来微调您的比例.
请注意,更改ylim值不会影响数据的显示方式,只是更改y轴上的标签.
正如@joran指出的那样,你可以使用geom_dotplot
require(ggplot2)
ggplot(mtcars, aes(x = mpg)) + geom_dotplot()
Run Code Online (Sandbox Code Playgroud)