Подтвердить что ты не робот

Как выделить диапазоны времени на сюжете?

У меня есть несколько сигналов, отобранных во времени, которые я рисую в 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)

- но пока успеха нет. Любые подсказки?

4b9b3361

Ответ 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.