R скрипка сюжет (виоплот) не отображает данные с одинаковым значением
Я пытаюсь создать скрипичный сюжет из результатов опроса, и все выглядит хорошо, за исключением тех случаев, когда все респонденты представили один и тот же ответ. В этих случаях vioplot ничего не отображает, и я перешел с vioplot на boxplot, чтобы была хотя бы строка с ответами.
Мой код:
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)
Вот как это выглядит с boxplot, используя вместо этого vioplot, весь столбец пуст.
Есть идеи, что я делаю не так и каким должен быть код, чтобы я мог использовать виоплот?
1 ответ
Быстро поигрался с пакетом. Вариантов не так много, не похоже, что он хорошо справляется с этими делами. Вы можете попробовать дрожание данных, чтобы создать небольшой случайный шум для графика, например
library(data.table)
library(vioplot)
cdt <- setDT(copy(cars))
cdt[, new := 16]
vioplot(cdt$speed, cdt$dist, jitter(cdt$new, 0.0001))
Я предпочитаю попробовать geom_violin в пакете ggplot2.
Красивее и функциональнее:)
извините, если вы не используете data.table; Я не кодирую это сейчас:)