2013-09-25 2 views
2

Мне нужно построить три строки (на один график), каждый из которых представляет данные одной лаборатории (две переменные/команда). В идеале график должен выглядеть эстетически приятным (отсюда и использование ggplot2!), Но по форме похожим на линейные графики, показанные ниже. Я не понимаю, как построить несколько строк на одном графике, используя библиотеку gggplot2. Мои текущие знания/мастерство в библиотеке ggplot2 низки, но я включил свои неоперившиеся усилия ниже.Построение линейного графика с использованием ggplot2

http://www.harding.edu/fmccown/r/#linecharts

Edit: Каждая строка строится из двух векторов, которые выглядят следующим образом:

temp = c(4, 25, 50, 85, 100) 
enzyme_activity = c(0.543, 0.788, 0.990, 0.898, 0.882) 

с переменной темп на оси х и каждой линии разного цвета, так что они могут быть дифференцированы ,

Edit2:

amyA = c(0.091, 0.147, 0.202, 0.236, 0.074) 
temp = c(4, 23, 37, 65, 100) 
df = data.frame(temp, amyA) 

ggplot(df, aes(x = temp, y = amyA, col = 'blue')) + geom_line() 

Код внутри второго редактирования не создает синюю линию и легенда совершенно неправильно. Если я повторяю два вызова ggplot с разными данными, выводится только одна строка.

+1

полезно ссылка: http://www.cookbook-r.com/Graphs/Bar_and_line_graphs_(ggplot2)/ –

+0

Что у вас уже пытался, а что не работает, или что вы не понимаете? –

ответ

4

Главное, чтобы организовать ваши данные перед построением, чтобы иметь столбец factor в кадре данных, указывающий отдельную строку для каждого набора значений, y. Например:

set.seed(1) 
df1 <- data.frame(e1 = sort(runif(5, 0.05, 0.25)), 
        e2 = sort(runif(5, 0.05, 0.25)), 
        e3 = sort(runif(5, 0.05, 0.25)), 
        t1 = sort(runif(5, 1, 100)), 
        t2 = sort(runif(5, 1, 100)), 
        t3 = sort(runif(5, 1, 100)) 
       ) 
### reshape this to give a column indicating group 
df2 <- with(df1, 
     as.data.frame(cbind(c(t1, t2, t3), 
          c(e1, e2, e3), 
          rep(seq(3), each=5)) 
        )) 
colnames(df2) <- c("temp","activity","team") 
df2$team <- as.factor(df2$team) 

Тогда

library(ggplot2) 
ggplot(df2, aes(x=temp, y=activity, col=team)) + geom_line() 

даяние: enter image description here

+0

Я попытался использовать код, который вы отправили, и мой график не похож на ваш пример. Вы определили векторы, которые выглядели следующим образом? > Е1 [1] 0,091 0,147 0,202 0,236 0,074 > е2 [1] 0,035 0,058 0,090 0,138 0,075 > е3 [1] 0,036 0,135 0,127 0,135 0,033 > > t1 [1] 4 23 37 65 100 > t2 [1] 4 23 37 65 100 > t3 [1] 4 23 37 65 100 – CaitlinG

+1

Извините! Когда я вставлял, я оставил строку 'as.factor'. Он должен работать так же, как и сейчас. Если вы используете тот же 'set.seed', вы должны получить те же самые векторы, что и выше, например. 'df1 $ e1' является' 0.09033639 0.10310173 0.12442478 0.16457067 0.23164156' – dardisco

2

Я хотел бы сделать что-то вроде:

library(ggplot2) 
ggplot(mtcars, aes(x = wt, y = mpg, color = as.factor(cyl))) + geom_line() 

enter image description here

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

+0

Привет, Пол. Благодарю. Дополнительную информацию см. В моем отредактированном сообщении. – CaitlinG

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