Как построить несколько линий (по уровням фактора) для ряда годов? - PullRequest
0 голосов
/ 24 октября 2018

Я довольно плохо знаком с R и у меня возникли проблемы с графиком.

Я пытаюсь создать линейный график с: $ YEAR по оси X $ METRIC по оси Yлиния разного цвета для каждой страны (имеется в виду 3 линии на одном участке)

$ СТРАНА - это фактор с 3 уровнями

COUNTRY YEAR    METRIC
USA     2000    14.874
USA     2001    15.492
USA     2002    13.091
USA     2003    14.717
CAN     1999    15.031
CAN     2000    14.343
CAN     2001    12.972
CAN     2002    13.216
SWE     1999    14.771
SWE     2000    17.033
SWE     2001    15.932
SWE     2002    14.516
SWE     2003    15.655

Когда я создаю график с графиком

(df $ YEAR, df $ METRIC, col = df $ COUNTRY, type = "p")

Я получаю график с точками для каждой (x, y) комбинации и разным цветом для каждого уровня фактора $ COUNTRY

Однако, когда я пытаюсь получитьстрока для каждой страны, с

участком (df $ YEAR, df $ METRIC, col = df $ COUNTRY, type = "l")

Я получаю один не-стопная строка, которая начинается с 4 наблюдений «США» и затем возвращается к первому году следующей страны («CAN»).

screenshot attached

Кто-нибудь может объяснить, почему это происходит?Можно ли создать этот сюжет, используя только встроенные функции?

Заранее благодарен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

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

Базовый пакет R отлично подходит для быстрого создания эскизов без предварительного знания, но более сложные графики легче определить с помощью пакета ggplot2.Вы можете установить его с install.packages("ggplot2").С ggplot2 вы можете сгруппировать строки, как вы уже пробовали, и как уже указывало r2evans.

library(ggplot2) ggplot(df) + geom_line(aes(YEAR, METRIC, group=COUNTRY, color=COUNTRY))

Итак, вы говорите ggplot, что вы используете df в качестве своих данных.Вы определяете оси x и y для geom_line внутри aes().С помощью group= вы определяете переменную группировки, а с помощью color= вы определяете, что каждая строка использует свой цвет.

Надеюсь, что вы отлично проведете время с R и ggplot2!

0 голосов
/ 24 октября 2018

Кроме моих комментариев выше, здесь есть базовая реализация base.Если изначально ваш $COUNTRY является фактором (is.factor(df$COUNTRY)), то вы можете пропустить создание ctryfctr и изменить вызов линии на lines(..., col=x$COUNTRY[1]):

df$ctryfctr <- factor(df$COUNTRY)
plot(NA, xlim=range(df$YEAR), ylim=range(df$METRIC))
for (x in split(df, df$COUNTRY)) lines(x$YEAR, x$METRIC, col=x$ctryfctr[1])

sample per-country plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...