我不明白为什么ID 2,6,8,10的点不会像在1,3,4,7,9中那样垂直对齐。
偏移量受堆栈比的影响,但是为什么它不影响所有组?
ggplot(sleep,
aes(x=ID,fill=group,y=extra))+
geom_dotplot(binaxis = 'y',
method="histodot",
stackgroups = TRUE,
binpositions="bygroup",
stackratio=1,
binwidth=0.1,
stackdir = "center",
dotsize = 3)
另一个例子是
ggplot(mtcars, aes(x = factor(am),fill = factor(cyl), y = mpg)) +
geom_dotplot(binaxis = "y",stackgroups = TRUE, stackdir = "center", binpositions="all")
stackgroups = TRUE
在这里使所有内容变得怪异。
可以在这里做些什么,还是有另一种方法来获取山姆?
答案 0 :(得分:0)
我无法告诉您使用div {
width: 100%;
}
函数时出了什么问题,但是您可以通过使用geom_point和选项geom_dotplot
来获得所需的内容。在函数position = position_dodge2()
中,您可以使用position_dodge2()
控制每个点的位置。请参阅下面的完整代码:
width
结果:
我们在同一X轴上可以有不同的对齐方式。例如,当ID = 1时,我可以移动第2组的点,同时保持第1组的点:
代码:
library(ggplot2)
ggplot(sleep,
aes(x=ID,fill=group,y=extra))+
geom_point(
size=3,
pch = 21,
position = position_dodge2(width=c(rep(0.00001,4),
0.2,
rep(0.00001,5)))
) +
scale_y_continuous(limits = c(-2,6)) +
theme_classic() +
theme(panel.grid.major.x = element_line(color="gray",
linetype = "dashed"))
答案 1 :(得分:0)
geom_dotplot似乎像所有点都在一组中一样计算“躲避”位置,然后在每组中绘制它们。
我找到了解决方法。 在这里,我作图并自己给圆点上色。该ggplot无法为其创建图例,因此我制作了另一幅图,它是正确的图例。 然后使用plot_grid制作我的最终剧情。 正确设置键很重要,否则绘图的颜色将不正确。
mycars <- as.data.table(mtcars)
mycars[cyl=="4",mycol:="red"][cyl=="6",mycol:="green"][cyl=="8",mycol:="blue"]
setkey(mycars,am,mpg)
myplot <- ggplot(mycars, aes(x = factor(am), y = mpg)) +
geom_dotplot(binaxis = "y",
fill=mycars$mycol,
stackratio=1,
binwidth=0.7, drop=FALSE,
stackdir = "center",
dotsize = 1)
lplot <- ggplot(mtcars, aes(x = factor(am),fill = factor(cyl), y = mpg))+
geom_dotplot(binaxis = "y",stackgroups = TRUE)+
scale_fill_manual(values=c("red","green", "blue"))
mylegend <- get_legend(lplot)
plot_grid(myplot,mylegend,ncol=2,rel_widths = c(6,1))