点图点未显示和点图格式

dotplot dot not showing up and format of dot plot

如何使用 mosaic 包显示彩色点来绘制点图?

library(mosaic)
n=500
r =rnorm(n)
d = data.frame( x = sample(r ,n= 1,size = n, replace = TRUE), color = c(rep("red",n/2), rep("green",n/2)))
dotPlot(d$x,breaks = seq(min(d$x)-.1,max(d$x)+.1,.1))

现在所有的点都是蓝色的,但我希望它们根据数据中的颜色列进行着色 table

您需要添加 stackgroups=TRUE,这样两种不同的颜色就不会叠加在一起。

n=20
set.seed(15)
d = data.frame(x = sample(seq(1,10,1), n, replace = TRUE), 
               color = c(rep("red",n/2), rep("green",n/2)))
table(d$x[order(d$x)])
length(d$x[order(d$x)])
binwidth= 1

ggplot(d, aes(x = x)) + 
  geom_dotplot(breaks = seq(0.5,10.5,1), binwidth = binwidth, 
               method="histodot", aes(fill = color),
               stackgroups=TRUE) +
  scale_x_continuous(breaks=1:10)

此外,ggplot 使用其内部调色板来填充美学。无论您如何称呼数据中 "color" 列的值,您都会得到相同的颜色。如果您想手动设置颜色,请添加 scale_fill_manual(values=c("green","red"))

如果您仍然对 mosaic/lattice 解决方案而不是 ggplot2 解决方案感兴趣,请继续。

dotPlot( ~ x, data = d, width = 0.1, groups = color, 
  par.settings=list(superpose.symbol = list(pch = 16, col=c("green", "red"))))

resulting plot

另请注意

  • ggplot2 一样,颜色不是由 color 变量中的值决定,而是由主题决定。您可以使用 par.settings 在绘图级别修改它或 trellis.par.set() 更改默认值。
  • 最好使用公式和 data = 并避免使用 $ 运算符。
  • 如果要设置 bin 宽度,可以使用 width 参数而不是 breaks。 (如果这对您很重要,您可以使用 center 参数来控制 bin 的中心。默认情况下,0 将是 bin 的中心。)