如何在R中制作3D图形 - 这是正确的选择吗?

时间:2014-03-26 22:37:37

标签: r graph 3d

我正在尝试制作一张图表,以了解学生在年龄和学校评分方面的差异。根据学校评分,我可以很容易地根据年龄和学生考试成绩制作正常的散点图。

我还可以在x轴上制作学校评级的图表,y轴一侧的年龄和另一侧的评级。但是,虽然它比两张图更好 - 但显然不会显示更多。

这里的想法是,不仅学校评分和考试成绩之间存在相关性,而且学校评级和年龄之间存在相关性 - 所以我想找出表明这一点的最佳方式,因为他们的年龄和评级都是与得分相关联。在评分较低的学校中,一名16岁的学生应该在评分较高的学校中获得比16岁学生更多的懈怠。

我最初的想法是,x轴将是1-10个等级,而测试分数将是一个y轴,年龄将是z。但是在查了一段时间之后,我无法让surface3d()工作或scatterplot3d()等等。这些可能是我需要加载的功能 - 但是因为我很漂亮对R来说,我不确定。如果有人能指出我的方向,我很乐意下载正确的软件包。

此数据的子集如下所示:

Rating Score Age 1 54.911 13 1 85.665 18 3 66.246 13 3 83.103 17 3 88.556 17 3 80.631 18 4 90.562 17 4 77.799 14 4 78.771 16 5 87.912 17 6 92.113 15 7 89.275 15 7 93.556 16 7 63.177 16 7 78.258 18 8 76.116 14 9 96.351 18 9 85.06 16 9 85.664 17 10 88.487 15

我很可能也会以错误的方式思考这个问题 - 而且我可能不得不改变思维过程来学习如何制作气泡图。

但感谢所有的帮助和想法,谢谢! (并且很遗憾地将两个问题合二为一。)

编辑: 这是Excel中的快速图表,这些值显示两者之间存在正相关 - 我只是想让它变得更简洁,更直观:

Test Scores

2 个答案:

答案 0 :(得分:1)

调用您的数据df,(我是从剪贴板中的问题加载的)

df <- read.table(file = "clipboard", header = T)

如果您没有安装软件包(如果安装了软件包,只需require(scatterplot3d)即可)

if(!require(scatterplot3d)) {
  install.packages("scatterplot3d")
  require(scatterplot3d)
}

制作情节

with(df, scatterplot3d(x = Rating, y = Age, z = Score))

这里的3D情节并不可怕。你也可以用颜色做2d图:

if(!require(ggplot2)) {
  install.packages("ggplot2")
  require(ggplot2)
}

ggplot(df, aes(x = Rating, y = Score, color = Age)) +
    geom_point()

ggplot(df, aes(x = Age, y = Score, color = Rating)) +
    geom_point()

答案 1 :(得分:1)

它可能在两个方面看起来更好,按年龄(或评级)分组。 lattice包适用于这些类型的图。什么都可以调整。这个是由年龄着色的。假设您的数据为d

library(lattice)
xyplot(Rating ~ Score, data = d, groups = Age,
       auto.key = list(title = "Age", space = "right", cex = 1.0),
       par.settings = list(superpose.symbol = list(pch = 19, cex = 1))) 

enter image description here