Как выделить временные диапазоны на сюжете? - PullRequest
31 голосов
/ 19 января 2011

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

50 голосов
/ 19 января 2011

Я думаю, что рисование прямоугольников просто отлично работает, я понятия не имею о лучшем решении, если простой вертикальной линии или линий недостаточно.

И просто используйте 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.

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