某些列发生变化时,在R中使用matplot

时间:2016-10-06 06:35:44

标签: r plot visualization

提前抱歉,因为我刚才在这里提问,并且不知道如何正确输入这张表。

假设我在R中构建了一个数据框,如:

team = c("A", "A", "A", "B", "B", "B", "C", "C", "C") 

value = c(1, 2, 3, 4, 5, 6, 7, 8, 9)

m = cbind(team, value)

我想创建一个图表,它会给我3条线条来绘制团队A, B, and C.的值。我相信我可以这样做,将矩阵m输入matplot某种方式,但我不是确定如何。

编辑:我已经越来越接近解决我的问题了。但是,我已经意识到,出于某种原因,使用我的代码,"价值"是一个745的列表,它匹配我的数据帧m中的行数。然而,当我取消列表(值)时,它变成了长度为894的数字。有关为什么会发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

team = c("A", "A", "A", "B", "B", "B", "C", "C", "C")
value = c(1, 2, 3, 4, 5, 6, 7, 8, 9)
m = cbind.data.frame(team, value)
library(ggplot2)
ggplot(m, aes(x=as.factor(1:nrow(m)), y=value, group=team, col=team)) + 
  geom_line(lwd=2) + xlab('index')

enter image description here

答案 1 :(得分:0)

如果您为每个团队提供相同数量的有序值,则可以使用matplot对其进行可视化。但数据应首先转换为矩阵;

m = cbind.data.frame(team, value, index = rep(1:3, 3))

m <- reshape(m, v.names = 'value', idvar = 'team', direction = 'wide', timevar = 'index')

matplot(t(m[, 2:4]), type = 'l', lty = 1)
legend('top', legend = m[, 1], lty = 1, col = 1:3)