2013-09-29 3 views
2

У меня есть данные, которые я пытаюсь построить. У меня есть несколько переменных, которые варьируются от 1880-2012 годов. У меня есть одно наблюдение в год. Но иногда переменная не наблюдает в течение ряда лет. Например, он может иметь наблюдение с 1880 по 1888 год, но не с 1889-1955 годов, а затем с 1956 года. Я бы хотел, чтобы ggplot2 + geom_line ничего не было в пропавших годах (1889-1955). Но он соединяет 1888 и 1956 с прямой линией. Есть ли что-нибудь, что я могу сделать, чтобы удалить эту строку? Я использую функцию ggplot.R - ggplot2 - geom_line - Избавиться от прямой линии для отсутствующих значений

Несвязанный вопрос, но есть ли способ заставить ggplot не сортировать имена переменных в легенде в алфавитном порядке? У меня есть такой код:

ggplot(dataFrame, aes(Year, value, colour=Name)) + geom_line() 

Или добавить цифры перед имена переменных (Name1, ..., Name10) к легенде. Например, 1. Name1 2. Name2 ... 10. Name10

+2

возможно дубликат [разрыв строки, когда нет данных в ggplot2] (HTTP : //stackoverflow.com/questions/14821064/line-break-when-no-data-in-ggplot2) –

+0

Это прекрасно. Спасибо за ссылку. – bill999

ответ

7

Вот некоторые выборочные данные, чтобы ответить на ваши вопросы, я добавил функцию geom_point(), чтобы сделать его легче увидеть, какие value s в данные:

library(ggplot2) 
seed(1234) 
dat <- data.frame(Year=rep(2000:2013,5), 
      value=rep(1:5,each=14)+rnorm(5*14,0,.5), 
      Name=rep(c("Name1","End","First","Name2","Name 3"),each=14)) 
dat2 <- dat 
dat2$value[sample.int(5*14,12)]=NA 

dat3, вероятно, пример того, что выглядит как ваши данные, за исключением того, что я лечения Year как целое.

dat3 <- dat2[!is.na(dat2$value),] 

# POINTS ARE CONNECTED WITH NO DATA IN BETWEEN # 
ggplot(dat3, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() 

Однако если добавить столбцы в данных за годы, которые отсутствуют колонки и устанавливающих, что значение NA тогда, когда вы участка данных вы получите пробелы.

# POINTS ARE NOT CONNECTED # 
ggplot(dat2, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() 

И, наконец, ответить на ваш последний вопрос это, как изменить порядок и этикетки из Name в легенде:

# CHANGE THE ORDER AND LABELS IN THE LEGEND # 
ggplot(dat2, aes(Year, value, colour=Name)) + 
    geom_line() + geom_point() + 
    scale_colour_discrete(labels=c("Beginning","Name 1","Name 2","Name 3","End"), 
          breaks=c("First","Name1","Name2","Name 3","End")) 
+0

Замечательный. Я ценю это. – bill999

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