2017-09-16 170 views
0

我试图创建一个调查结果的小提琴情节,并且一切看起来都很好,预计所有受访者都会提交相同答案的情况。在这些情况下,vioplot什么都不显示,并且我从vioplot更改为boxplot,至少有一行是答案。R小提琴情节(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相反,整列是空的。

enter image description here

任何想法,我做错了什么的代码应该是这样的,这样我可以使用vioplot?

+1

如果你没有任何变化,那么有一个这样的情节是有道理的。你没有做错什么。 – ekstroem

+0

问题在于颜色标记了问题所在的类别,因此用户将无法看到受访者提交相同答案的类别,因为我只是有一条黑线。我可以在Photoshop中绘制它,但这是我想要做的最后一件事:-) – Ryan

回答

0

有一个快速发挥与包。没有太多的选择,看起来不像它处理好这些情况。您可以尝试使用数据的抖动来为图形创建一些小的随机噪声。

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;我现在不编码:)