2013-04-21 2 views
1

Использование ggplot Я пытаюсь построить две строки значений. Так var0 имеет значения 49,5,20 для «Понедельник», «Вторник», «Среда» и var1 имеет значения 49,1,20 для «Понедельник», «Вторник», «Среда»Невозможно построить несколько дней/значений с помощью ggplot

Вот код:

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 

Am I настройки данные правильно?

ответ

4

Существовало несколько ошибок в коде - х и у значения должно поместить внутрь 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

+0

спасибо, то будет похоже на работу, вы знаете, как контролировать порядок значений оси х? По умолчанию в алфавитном порядке, конфиденциальность - естественный порядок в понедельник, вторник, среду. –

+0

Для правильного заказа вам следует использовать функцию factor() для установки уровней = в нужный вам порядок. –

Смежные вопросы