我希望有一个点图,显示x轴上的计数。你怎么能得到下面的dotplot来显示x-asix的计数?
谢谢。
date = seq(as.Date("2016/1/5"), as.Date("2016/1/11"), "day")
value = c(11,11,12,12,13,14,14)
dat =data.frame(date = date, value = value)
dat
library(ggplot2)
library(ggplot2)
ggplot(dat, aes(x = value)) + geom_dotplot(binwidth = .8) +
scale_y_discrete(breaks= seq(1,max(table(dat$value))+2,1),
labels = seq(1,max(table(dat$value))+2,1) ) #tried using scale_y discrete but it does nothing
答案 0 :(得分:2)
ylim(0, A)
给出你想要的东西,其中A是计算1.00密度所需的堆叠点数。我们可以计算A的精确值(但有点复杂;对话方法给出近似值)。
(我参考了post1,post2和post3)
library(ggplot2); library(grid)
date = seq(as.Date("2016/1/5"), as.Date("2016/1/12"), "day")
value = c(11,11,12,12,13,14,14,14)
dat =data.frame(date = date, value = value)
### base plot
g <- ggplot(dat, aes(x = value)) + geom_dotplot(binwidth = 0.8) + coord_flip()
g # output to read parameter
### calculation of width and height of panel
grid.ls(view=TRUE,grob=FALSE)
seekViewport('panel.3-4-3-4')
real_width <- convertWidth(unit(1,'npc'), 'inch', TRUE)
real_height <- convertHeight(unit(1,'npc'), 'inch', TRUE)
### calculation of other values
height_coordinate_range <- diff(ggplot_build(g)$panel$ranges[[1]]$y.range)
real_binwidth <- real_height / height_coordinate_range * 0.8 # 0.8 is the argument binwidth
num_balls <- real_width / 1.1 / real_binwidth # the number of stacked balls. 1.1 is expanding value.
g + ylim(0, num_balls)
# The dirty balls border probably comes from my environment.
答案 1 :(得分:0)
您可以添加coord_flip()
来切换ggplot中的x和y轴。以下是您的脚本示例:
date = seq(as.Date("2016/1/5"), as.Date("2016/1/11"), "day")
value = c(11,11,12,12,13,14,14)
dat =data.frame(date = date, value = value)
dat
编辑,依靠x轴:
这将给出带有简化命令的点图,并将计数作为x轴上的标签。注意:binwidth已从0.8更改为1,以适应ylim的使用而不是比例。
library(ggplot2)
ggplot(dat, aes(x = value)) +
geom_dotplot(binwidth = 1) +
coord_flip() +
ylim(0,max(table(dat$value))+2)
编辑,依靠y轴:
library(ggplot2)
ggplot(dat, aes(x = value)) +
geom_dotplot(binwidth = 1) +
ylim(0,max(table(dat$value))+2)