Спасибо u / Joris за полезное предложение! Поскольку я не нашел этот вопрос в другом месте, я go опубликую и опубликую довольно простое решение моего вопроса здесь, чтобы другие могли его найти.
По сути, мне нужно было применить альфа-эстетику c через aes(alpha=y, ...)
. Теоретически я мог бы применить это к любому геому. Я попробовал geom_col()
, что сработало, но лучшим решением было использовать geom_segment()
, так как все мои "бары" должны были быть одинаковой длины. Также обратите внимание, что мне пришлось «нарезать» сегменты, чтобы избежать проблемы переполнения, подобной тем, которые были найдены здесь , здесь и здесь .
ggplot(myData, aes(x, Sample)) +
geom_segment(aes(x=x, xend=x-1, y=Sample, yend=Sample, alpha=y), color='blue3', size=14)
Это дает нам хороший градиент:
![enter image description here](https://i.stack.imgur.com/NedYw.png)
Поскольку значения max y не одинаковы для обеих строк, если Я хотел «соответствовать» интенсивности, я нормализовал данные (myDataNorm
) и мог сделать тот же график. В моем конкретном случае я предпочел бары, у которых не было градиента, но которые показывали жесткий край для максимальных значений y. Вот одно из решений:
ggplot(myDataNorm, aes(x, Sample)) +
geom_segment(aes(x=x, xend=x-1, y=Sample, y=end=Sample, alpha=ifelse(y>0.9,1,0)) +
theme(legend.position='none')
![enter image description here](https://i.stack.imgur.com/YXAXr.png)
Лучше, но мне не понравились оставленные слабыми участки. Окончательный код - это то, что дало мне то, что идеально отражало то, что я искал. Я просто переместил оператор ifelse()
, чтобы применить его к x
aestheti c, поэтому части нарисованного сегмента были только теми, у которых были достаточно высокие значения y. Обратите внимание, что мои данные «начинаются» с x = 290 здесь. Вероятно, более элегантные способы объединить эти x
и xend
термины, но независимо от того:
ggplot(myDataNorm, aes(x, Sample)) +
geom_segment(aes(
x=ifelse(y>0.9,x,290), xend=ifelse(y>0.9,x-1,290),
y=Sample, yend=Sample), color='blue3', size=14) +
xlim(290,400) # needed to show entire scale
![enter image description here](https://i.stack.imgur.com/TEvay.png)