Обновленный ответ:
Этот ответ был обновлен, поскольку
1. Изменены данные v1, v2, v3 в вопросе и
2. метки для трех столбцов.были добавлены
Верхняя часть по-прежнему в основном оригинальный ответ.Ниже приведен новый ответ в ответ на разъяснения из ОП.
Оригинальный ответ в основном
Вот что-то вроде того, что вы просите.Тем не менее, не может показать центральную тенденцию, где ничего не существует.После того, как мы посмотрим на графики, я расскажу об этом немного подробнее.После того, как мы посмотрим на графики, я расскажу об этом немного подробнее.
Идея состоит в том, чтобы создать пустой график и затем нарисовать полосу серого для каждой переменной (v1, v2, v3).Место на графике с наименьшим количеством ответов будет черным.Область с наибольшим количеством ответов будет белой.Между ними уровень серого будет масштабироваться пропорционально количеству ответов.
## To make it easy to refer to the different variables
Responses = list(v1,v2,v3)
## 100 colors to allow for a lot of continuity
## color 1 is black, color 100 is white
GrayScale = gray.colors(100, start=0.05, end=0.97)
## Make a blank plot
plot(NULL, type="n", xlab="", ylab="", bty="n", xaxt="n", yaxt="n",
xlim=c(1,4), ylim=c(1,length(Responses)+1))
## Plot all of the bars
for(j in 1:length(Responses)) {
Tab = table(Responses[[j]])
Tab = round(99*(Tab-min(Tab))/(max(Tab)-min(Tab)))+1
x = seq(1,4,0.01)
Density = round(approx(1:4, Tab , x)$y)
## Make a smooth looking bar
for(i in 1:(length(x)-1)) {
polygon(c(x[i],x[i],x[i+1],x[i+1]), c(j,j+0.75,j+0.75,j),
col=GrayScale[Density[i]], border=NA)
}
}
## Add labels
text(1:4, 4, levels(v1))
axis(2, at=(1:3)+0.4, labels=c("v1", "v2", "v3"), lwd=0, lwd.ticks=1, las=1)
Ответ на измененный вопрос
Этот ответ только строит графики распределения Гаусса, используяСредние значения и стандартные отклонения, которые вы рассчитали.Гауссианы построены в стиле предыдущего ответа, с белым для среднего, а точка, наиболее удаленная от среднего, - черная.
Means = c(v1n.mean, v2n.mean, v3n.mean)
SD = c(v1n.sd, v2n.sd, v3n.sd)
## 100 colors to allow for a lot of continuity
## color 1 is black, color 100 is white
GrayScale = gray.colors(100, start=0.05, end=0.97)
## Make a blank plot
plot(NULL, type="n", xlab="", ylab="", bty="n", xaxt="n", yaxt="n",
xlim=c(1,4), ylim=c(1,length(Responses)+1))
for(j in 1:length(Responses)) {
x = seq(1,4,0.03)
y = dnorm((x-1)/3, Means[j], SD[j])
y = round(99*(y-min(y))/(max(y)-min(y))) + 1
for(i in 1:(length(x)-1)) {
polygon(c(x[i],x[i],x[i+1],x[i+1]), c(j,j+0.75,j+0.75,j),
col=GrayScale[y[i]], border=NA)
}
}
## Add labels
text(1:4, 4, levels(v1))
axis(2, at=(1:3)+0.4, labels=c("v1", "v2", "v3"), lwd=0, lwd.ticks=1, las=1)