Как выделить диапазоны времени на сюжете?
У меня есть несколько сигналов, отобранных во времени, которые я рисую в R, используя непрерывные линии. Кроме того, я хотел бы выделить несколько конкретных временных диапазонов на графике.
Мой текущий подход - рисовать прозрачные прямоугольники полной высоты с соответствующей шириной и горизонтальным положением, которые соответствуют временному диапазону. Я думаю, что это хорошее представление, так как оно четко отделяет точки внутри диапазона от окружающих; но есть ли лучшие?
И вторая, практическая часть вопроса. Теперь я рисую сигналы следующим образом:
p <- ggplot(data=gs, mapping=aes(x=frameno, y=value, col=variable)) +
geom_line()
p
Я попытался вручную рисовать альфа-смешанный прямоугольник:
p + geom_rect(aes(xmin=600, xmax=650, ymin=-3, ymax=3),
colour=alpha("grey20", 0.5), fill.alpha=0.5)
- но пока успеха нет. Любые подсказки?
Ответы
Ответ 1
Я думаю, что рисование прямоугольников просто отлично работает, я понятия не имею о лучшем решении, если простая вертикальная линия или строки недостаточно.
И используйте alpha=0.5
вместо fill.alpha=0.5
для проблемы прозрачности, также указывая inherit.aes = FALSE
в geom_rect()
. Например. составление графика из данных бриллиантов:
p <- ggplot(diamonds, aes(x=price, y=carat)) +
geom_line(aes(color=color))
rect <- data.frame(xmin=5000, xmax=10000, ymin=-Inf, ymax=Inf)
p + geom_rect(data=rect, aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax),
color="grey20",
alpha=0.5,
inherit.aes = FALSE)
![alt text]()
Также обратите внимание, что ymin
и ymax
можно легко установить в -Inf
и Inf
.