Я новичок в R/ggplot. Я хотел бы создать график geom_line непрерывного переменного временного ряда, а затем добавить слой, состоящий из событий. Непрерывная переменная и ее временные метки сохраняются в одном кадре данных. События и их временные метки сохраняются в другом кадре данных.
То, что я действительно хотел бы сделать, это что-то вроде диаграмм на сайте finance.google.com. В тех, временные ряды - цена акции, и есть "флаги" для обозначения новостных событий. Я на самом деле не собираю финансовые материалы, но тип графика аналогичен. Я пытаюсь построить визуализацию данных файла журнала. Вот пример того, что я имею в виду...
Если целесообразно (?), я хотел бы использовать отдельные data.frames для каждого слоя (один для непрерывных переменных наблюдений, другой для событий).
После некоторых проб и ошибок это примерно так же близко, как я могу получить. Здесь я использую примеры данных из наборов данных, которые поставляются с ggplot. "экономика" содержит некоторые данные временного ряда, которые я хотел бы построить, а "президентский" содержит несколько событий (президентских выборов).
library(ggplot2)
data(presidential)
data(economics)
presidential <- presidential[-(1:3),]
yrng <- range(economics$unemploy)
ymin <- yrng[1]
ymax <- yrng[1] + 0.1*(yrng[2]-yrng[1])
p2 <- ggplot()
p2 <- p2 + geom_line(mapping=aes(x=date, y=unemploy), data=economics , size=3, alpha=0.5)
p2 <- p2 + scale_x_date("time") + scale_y_continuous(name="unemployed [1000's]")
p2 <- p2 + geom_segment(mapping=aes(x=start,y=ymin, xend=start, yend=ymax, colour=name), data=presidential, size=2, alpha=0.5)
p2 <- p2 + geom_point(mapping=aes(x=start,y=ymax, colour=name ), data=presidential, size=3)
p2 <- p2 + geom_text(mapping=aes(x=start, y=ymax, label=name, angle=20, hjust=-0.1, vjust=0.1),size=6, data=presidential)
p2
Вопросы:
-
Это нормально для очень редких событий, но если есть кластер из них (как это часто бывает в файле журнала), он становится беспорядочным. Есть ли какая-то техника, которую я могу использовать, чтобы аккуратно отображать кучу событий, происходящих за короткий промежуток времени? Я думал о position_jitter, но мне было очень трудно зайти так далеко. google charts складывает эти флаги событий друг над другом, если их много.
-
На самом деле мне не нравится вставлять данные событий в том же масштабе, что и дисплей непрерывного измерения. Я бы предпочел поставить его в facet_grid. Проблема в том, что все грани должны быть получены из одного и того же data.frame(не уверен, что это правда). Если это так, это также кажется не идеальным (или, может быть, я просто пытаюсь избежать изменения)?