R小提琴图(vioplot)不显示相同值的数据

R violin plot (vioplot) does not display data of same value

我正在尝试创建调查结果的小提琴图,一切看起来都很好,除了所有受访者都提交相同答案的情况。在这些情况下,vioplot 不显示任何内容,我从 vioplot 更改为箱线图,以便至少有一行包含答案。

我的代码:

plot(1,1,xlim=c(0,10),ylim=range(c(x1,x2,x3,x4,x5,x6,x7,x8,x9)),type="n",
 xlab="",ylab="",axes=FALSE)
axis(side = 1, at=2,label="")
axis(side = 1, at=5,label="")
axis(side = 1, at=8,label="")

axis(side=2)
vioplot(x1,at=1,col="blue",add=TRUE)
vioplot(x2,at=2,col="red",add=TRUE)
vioplot(x3,at=3,col="yellow",add=TRUE)
vioplot(x4,at=4,col="blue",add=TRUE)
vioplot(x5,at=5,col="red",add=TRUE)
vioplot(x6,at=6,col="yellow",add=TRUE)
boxplot(x7,at=7,col="blue", add=TRUE)
boxplot(x8,at=8,col="red",add=TRUE)
vioplot(x9,at=9,col="yellow",add=TRUE)

这是箱线图的样子,改用 vioplot,整列都是空的。

知道我做错了什么以及代码应该是什么样子以便我可以使用 vioplot 吗?

快速试用了这个包。选项不多,看起来它不能很好地处理这些情况。您可以尝试对数据进行抖动,为图形创建一些小的随机噪声,例如

library(data.table)
library(vioplot)

cdt <- setDT(copy(cars))
cdt[, new := 16]

vioplot(cdt$speed, cdt$dist, jitter(cdt$new, 0.0001))

我最好的建议是在 ggplot2 包中尝试 geom_violin。

http://www.sthda.com/english/wiki/ggplot2-violin-plot-quick-start-guide-r-software-and-data-visualization

更漂亮、更实用:)

p.s。抱歉,如果您不使用 data.table;我现在不编写代码:)