Вопрос по ggplot2, r – ggplot2: как прозрачно затенять чередующиеся дни на сюжете

11

Что я здесь делаю не так, пожалуйста? Я пытаюсь закрасить чередующиеся 24-часовые ежедневные прямоугольники прозрачным серым цветом. Но рисуется только последний прямоугольник цикла for (?!?). Если я делаю что-то вручную, а не цикл for, он работает нормально.

Есть ли способ векторизовать это, чтобы избежать цикла for? (И можно ли это сделать с помощью qplot?) Я новичок в ggplot2 и да, я прочитал сайт, книгу и примеры Хэдли.

Вторая проблема: настройка альфа-канала на эстетике не препятствует прямоугольникам перекрывать фон. Как получить прозрачность?

<code>dat <- data.frame(my_x_series=1:192, my_y_series=5.0*runif(192))
# (ymin, ymax are computed for this series using min/max(na.rm==TRUE))
ymax <- 5.0
ymin <- 0.0
p <- ggplot(dat, aes(x=my_x_series,alpha=0.9)) 
alternate_daily_bars_xmin <- c(4,52,100,148)

for (shade_xmin in alternate_daily_bars_xmin) {
    shade_xmax <- min(shade_xmin+24, 192) # clamp at end of x-range
    p <- p + geom_rect(aes(alpha=0.5,xmin=shade_xmin,xmax=shade_xmax,ymin=ymin,ymax=ymax), fill='gray80')
}
p <- p + geom_point(aes(y=my_y_series))
p
</code>
Добавлено случайное определение Dat для воспроизводимости. Это командный синтаксис, который побеждает меня. Я предполагаю, что каждый geom_rect переопределяет последний вместо компоновки, как вы могли ожидать. smci

Ваш Ответ

0   ответов

Похожие вопросы