【发布时间】:2014-11-03 06:51:01
【问题描述】:
我正在尝试使用 ggplot2 绘制一个绘图,并带有从某些条件生成的并排条,这些条件可以从数据中计算出来。我怀疑问题是正确格式化我的数据,以便 ggplot 给我我想要的。不过,我这辈子都做不好。
我所拥有的是数据框,其中填充了学生每次在学校学习课程时的行。感兴趣的变量是 Student.ID、Course.ID、Session、Fiscal.Year 和 Facility。每一行都是学生上一门课程的情况,并告诉他们上了什么课程,他们在哪里上过等等。据我所知,这是长格式数据所需要的(如果我是,请纠正我错误的)。唯一可能具有 NA 值的字段是 Facility,但我还是打算从图中排除这些字段,以便您可以将数据框视为已完全填充。
我想做的是按财政年度制作一个图表,显示有多少课程有 (注意:当我谈论提供了多少课程时,我考虑到每门课程可能会提供多次,并且每次提供它都有一个与之关联的会话编号。棘手的部分是会话编号不是唯一的。我希望这是有道理的,如果需要,我可以尝试澄清更多。)
我设想最终产品是在位置上使用分面的多个图表,x 轴是 Fiscal.Year,y 轴是课程/课程的数量。对于图表中的每个 FY,我希望并排堆叠不同的颜色条,显示该位置为该 FY 提供的总课程数
这里有一些可以使用的示例数据(键入为 CSV,因为我不能只复制文件的头部)。我已经排除了 Facility 列,因为通过它进行分面很容易,我们可以假设一个 FY 作为我认为的测试示例。作为参考,应该有 3 门
ID,CourseID,Session,Fiscal.Year
101,1,,1,FY13
102,1,1,FY13
103,1,1,FY13
104,1,1,FY13
101,2,1,FY13
102,2,1,FY13
103,2,1,FY13
101,2,2,FY13
102,2,2,FY13
103,2,2,FY13
101,3,1,FY13
102,3,1,FY13
101,3,2,FY13
102,3,2,FY13
101,3,3,FY13
102,3,3,FY13
我试过了:
- 使用 ddply 创建一个新的数据框,其中包含 Course.ID、Session、FY、Facility、Count of Students 列。然后我创建了一个名为“TwoLess”的新列,如果计数
ggplot(na.omit(df), aes(y = TwoLess, x = Fiscal.Year)) + geom_bar(stat = 'identity') + facet_wrap(~Facility)
我认为这种方法存在严重缺陷,我错过了长格式数据的一些“好处”,因为据我了解,这正是 ggplot 想要的。
在 ggplot 中绘制此图的最佳方法是什么?
还值得一提的是,虽然我可以访问一些更流行的包,如 ggplot2、plyr、reshape2,但我无法加载所有包,所以我更喜欢使用上述包(或任何它们的依赖项)。我不认为它应该有那么大的限制。
【问题讨论】:
-
你能提供一些真实的数据或者更接近的数据吗?