无法使用ggplot绘制多天/值

时间:2013-04-21 11:24:12

标签: r ggplot2

使用ggplot我试图绘制两行值。 因此var0在“星期一”,“星期二”,“星期三”的值为49,5,20 并且var1的值为“星期一”,“星期二”,“星期三”的值为49,1,20

以下是代码:

test_data <- data.frame(
var0 = c(49, 5, 20),
var1 = c(49, 1, 10),
days = c("Monday" , "Tuesday" , "Wednesday"))

ggplot(test_data, days)
geom_line(y = var0, colour = "var0")
geom_line(y = var1, colour = "var1")

这里是错误:

> ggplot(test_data, days)
Error in inherits(mapping, "uneval") : object 'days' not found
> geom_line(y = var0, colour = "var0")
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat,  : 
  object 'var0' not found
> geom_line(y = var1, colour = "var1")
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat,  : 
  object 'var1' not found

我是否正确设置了数据?

1 个答案:

答案 0 :(得分:4)

您的代码中存在多个错误 - x和y值应放在aes()调用中,然后在+ggplot()调用之间丢失geom_line()个符号

如果你需要绘制两组y值我建议,首先,融化你的数据,然后绘制融化的数据框。使用融化数据,您只需要进行一次geom_line()调用,并且可以根据将在图例中显示的variable为每一行设置颜色。

library(reshape2)
test_data2<-melt(test_data,id.vars="days")
test_data2
       days variable value
1    Monday     var0    49
2   Tuesday     var0     5
3 Wednesday     var0    20
4    Monday     var1    49
5   Tuesday     var1     1
6 Wednesday     var1    10
ggplot(test_data2,aes(days,value,color=variable,group=variable))+geom_line()

enter image description here