2016-07-29 4 views
-1

Ниже мой набор данных, и я хочу, чтобы построить переменные states, o7, cas и df с течением времениУчасток с использованием ggplot2

year states o7 cas df 
1989  151 117 35 16 
1990  150 158 27 12 
1991  150 194 43 12 
1992  150 173 38 9 
1993  151 169 35 14 
1994  153 169 23 9 
1995  153 158 22 8 
1996  153 157 18 6 
1997  153 214 18 11 
1998  154 186 17 5 
1999  154 222 16 7 
2000  155 210 20 4 
2001  154 210 19 2 
2002  155 231 17 2 
2003  155 268 18 1 
2004  155 236 16 3 
2005  155 263 19 1 
2006  155 238 17 5 
2007  155 284 16 3 
2008  155 318 20 4 
2009  155 295 18 5 
2010  155 330 20 4 
2011  155 312 16 3 

я использую ggplot2 пакет, чтобы сделать это

ggplot(dat, aes(year, o7)) + 
    geom_line() 

Однако я не отображать другие переменные на одном и том же участке.

  • Как создать другие переменные в данных? И как мне назначить их новых ярлыков (в ggplot)?

ответ

2

В основном рекомендуется использовать функцию melt из пакета reshape2, если вы хотите построить несколько столбцов в одном и том же ggplot.

# df = your example 
require(reshape2) 
df_melt = melt(df, id = "year") 

ggplot(df_melt, aes(x = year, y = value, color = variable)) + geom_point() 

enter image description here

Как упоминалось Дэй @ Натан, колонны имеют совершенно различные диапазоны, используя facet_wrap может быть возможность:

ggplot(df_melt, aes(x = year, y = value, color = variable)) + geom_point() + 
facet_wrap(~variable, scales = "free") 

enter image description here

+0

спасибо, выглядит великолепно. Одна вещь: как переключиться на линии с разными формами вместо точек с разными цветами - я цветной. – FKG

+0

Переключение на строки - это просто geom_lines(), но как получить их в разных формах? – FKG

+0

Вы можете добавить 'linetype = variable' внутри' aes' объекта 'ggplot', если вы используете' geom_line' вместо 'geom_point'. Использование 'shape = variable' в' aes', а затем использование 'geom_point' будет изменять форму точек. – bVa

1

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

ggplot(dat, aes(x = year, y = o7)) + 
geom_line() + 
geom_line(aes(y = cas)) + 
geom_line(aes(y = df)) 

Имейте в виду, что все слои в функции ggplot (т.е. geom_line.) Пытаются наследовать aes(...) набор по ggplot(aes(...)). Такое поведение контролируется параметром inherit.aes =, который по умолчанию установлен в TRUE

Потому что это выглядит, как ваши колонки имеют совершенно различные диапазоны вы могли бы быть лучше использовать другой вариант, как aes(colour = ?, shape = ?) сюда карт cas и df. Кое-что поиграть с максимальным визуальным эффектом.

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