2016-04-17 2 views
0

Благодарим вас за чтение. Я считаю, что я не могу нарисовать линию сюжет из моей существующих данных, как показано ниже:Как нарисовать линию линии в ggplot с помощью файла data.frame?

a=structure(list(ID = structure(1:3, .Names = c("V2", "V3", "V4" 
), .Label = c(" day1", " day2", " day3"), class = "factor"), 
    Protein1 = structure(c(3L, 1L, 2L), .Names = c("V2", 
    "V3", "V4"), .Label = c("-0.651129553", "-1.613977035", "-1.915631511" 
    ), class = "factor"), Protein2 = structure(c(3L, 
    1L, 2L), .Names = c("V2", "V3", "V4"), .Label = c("-1.438858662", 
    "-2.16361761", "-2.427593862"), class = "factor")), .Names = c("ID", 
"Protein1", "Protein2"), row.names = c("V2", 
"V3", "V4"), class = "data.frame") 

Что мне нужно нарисовать график, как показано ниже:

enter image description here

Я попытался следующие коды но результаты не в порядке;

qplot(ID, Protein1, data=a, colour=ID, geom="line") 

также:

a1<-melt(a, id.vars="ID") 
ggplot(a1,aes(ID,value))+ geom_line()+geom_point() 

Так большое спасибо за вашу заботу.

ответ

1

Во-первых, вам нужно изменить структуру ваших данных.frame: Protein1 & Protein2 должно быть числовым, а не сомнительным.

a$Protein1 = as.numeric(as.character(a$Protein1)) 
a$Protein2 = as.numeric(as.character(a$Protein2)) 

Если вы хотите только построить «Protein1», вам не нужно использовать расплав в первую очередь.

ggplot(a, aes(x = ID, y = Protein1)) + geom_point() + geom_line(aes(group = 1)) + ylim(-3,3) 

group = 1 разрешения, соединяющие точки с geom_line(): source


Теперь, если вы хотите увидеть Protein1 & Protein2 на том же участке, вы можете использовать melt:

a1<-melt(a, id.vars="ID") 
ggplot(a1, aes(x = ID, y = value, group = variable, color = variable)) + geom_point() + geom_line() + ylim(-3,3) 

enter image description here

+0

спасибо. Не могли бы вы помочь мне добавить легенды на строках в сюжете? – Sadegh

+1

Если вы хотите только переместить легенду (снизу, справа), используйте: '+ theme (legend.justification = c (1,0), legend.position = c (1,0))' Если вы хотите только для записи меток: '+ geom_text (data = a1 [a1 $ ID ==" day3 ",], aes (label = variable), vjust = -1, hjust = 0)'. Будьте осторожны, я видел, что уровни ID являются «day1» с пустым символом. – bVa

+0

безупречный. Спасибо. Еще один момент. Вы знаете, как можно добавить метку на строку вместо метки на точку? одно слово «Protein1» для красной линии и одно слово «Protein2» для синего. – Sadegh

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