正如@Gregor所说的那样,只有5个序数值的平滑密度估计(这就是小提琴情节)是不合适的。即使你有上/下的成绩,你仍然可能会更好地与酒吧或线条。请参阅下面的几个选项:
library(ggplot2)
# Fake data
dat = data.frame(grades=LETTERS[c(1:4,6)],
count=c(5,12,11,5,3), stringsAsFactors=FALSE)
# Reusable plot elements
thm = list(theme_bw(),
scale_y_continuous(limits=c(0,max(dat$count)), breaks=seq(0,20,2)),
labs(x="Grade", y="Count"))
ggplot(dat, aes(grades, count)) +
geom_bar(stat="identity", fill=hcl(240,100,50)) +
geom_text(aes(y=0.5*count, label=paste0(count, " (", sprintf("%1.1f", count/sum(count)*100),"%)")),
colour="white", size=3) +
thm
ggplot(dat, aes(grades, count)) +
geom_line(aes(group=1),alpha=0.4) +
geom_point() +
thm
ggplot(dat, aes(x=as.numeric(factor(grades)))) +
geom_ribbon(aes(ymin=0, ymax=count), fill="grey80") +
geom_text(aes(y=count, label=paste0(sprintf("%1.1f", count/sum(count)*100),"%")), size=3) +
scale_x_continuous(labels=LETTERS[c(1:4,6)]) +
thm
欢迎的话,你可能会想回顾一些建议在[此链接](http://stackoverflow.com/questions/5963269/how如何制作一个很好的问题。就目前而言,你的问题有被封闭的危险。你最好编辑它以提供你尝试过的代码的例子,以及你期望的结果是什么样的(更仔细地被禁止)。此外,让问题更少谈话,更重要的一点。最后,它不是GNU R.只要R会做,因为有各种风味 – dww
你应该提供一个更好的[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great- R-再现的-例子)。没有办法像在小提琴剧情中那样显示任何密度,每个档次只有一个数字。这没有任何意义。 – MrFlick
有5个类别的平滑线似乎是矫枉过正,为什么不只是使用barplot或直方图? – Gregor