2016-10-10 50 views
2

我想可视化的数据帧中的图像以下:R:平均等级分的可视化作为(排序的)小提琴情节

grade number 
    A  2 
    B  6 
    C  1 
    D  0 
    E  1 

的想法是具有在x的等级轴表示作为类别和在y轴上接受相应等级的学生的数量。

我的任务不是将它们显示为折线图中的点,而是将它们显示为类似于小提琴情节的类别上方的厚度。这实际上是关于它的纯粹视觉效果。

我试过ggplot2的小提琴,但是它总是取y轴数列的值。但是Y轴应该只有一个维度:密度图旋转的等级。

我会很高兴如果有人提示我应该如何重组我的数据,或者如果我完全误解我的方法。

嗯,是的:在顶部,我想显示成绩点平均值作为一个小栏。

非常感谢您抽出宝贵时间。我确信解决方案非常明显,但我只是看不到它。

+1

欢迎的话,你可能会想回顾一些建议在[此链接](http://stackoverflow.com/questions/5963269/how如何制作一个很好的问题。就目前而言,你的问题有被封闭的危险。你最好编辑它以提供你尝试过的代码的例子,以及你期望的结果是什么样的(更仔细地被禁止)。此外,让问题更少谈话,更重要的一点。最后,它不是GNU R.只要R会做,因为有各种风味 – dww

+0

你应该提供一个更好的[可重现的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great- R-再现的-例子)。没有办法像在小提琴剧情中那样显示任何密度,每个档次只有一个数字。这没有任何意义。 – MrFlick

+0

有5个类别的平滑线似乎是矫枉过正,为什么不只是使用barplot或直方图? – Gregor

回答

2

正如@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 

enter image description here

+0

非常感谢您的详细解答。首先,这非常有帮助。正如你可能已经注意到的那样,我是一个初学者级别的autodidact,所以每一个解决问题的提示都是一个很大的解脱。 – schultzandschultz

+0

但是(另外),因为这是关于视觉效果的:不应该有可能(抽象地说出 - 不知道这将如何以代码方式工作)采用ggplot_ribbon-graph并围绕一个单一的轴进行镜像。就像如果你把成绩不是作为x轴在正y方向上的距离,而是作为在每个方向(正和负)方向上距固定线(假设x轴)的距离。类别A将包含2.5的值和镜像值-2.5。类别B也是如此。我的直觉说这是小提琴情节的工作原理,但是定制它可能更简单。 – schultzandschultz