Мне нужен график ggplot2 с определенным фоном в направлении y. Y также является шкалой log2 от 0,25 до 4, таким образом, средняя точка 1. Крайние точки Y (0,25 и 4) должны быть красными, а средняя точка (1) должна быть зеленой.
Диагональная градация цвета фона графика ggplot в R меня далеко, и я написал это:
## create a diag gradient background
## create a df to supply the background to geom_tile
yseq <- seq(-2,2, length=100)
yseqlog2 <- 2^yseq
df <- expand.grid(x=0:100, y=yseqlog2) # dataframe for all combinations
## plot
bgplot <- ggplot(df, aes(x, y, fill=y)) + # map fill to y
geom_tile(alpha = 0.75) + # let the grid show through a bit
scale_fill_gradient2(low='red', high='red', mid = 'green',midpoint = 1) + # choose your colours
scale_y_continuous(trans = 'log2') # transform y axis to log2
bgplot
Это дает мне почти то, что я хочу, за исключением низкой интенсивности красного (0,25). См. Рис. Как получить полный красный цвет при 0,25 ?? Спасибо.
/ Йенс





Вы можете использовать scale_fill_gradientn:
bgplot <- ggplot(df, aes(x, y, fill = y)) +
geom_tile(alpha = 0.75) +
scale_fill_gradientn(colors = c("red", "green", "red"),
limits = c(0.25, 4),
trans = "log2") +
scale_y_continuous(trans = "log2")
Моя беда, я забыл + в конце 1-й строки. Это исправлено.
Идеально! Большое спасибо! :)
Спасибо! Но я не получаю вывод, который вы показываете, я получаю сообщение об ошибке: Ошибка в geom_tile (alpha = 0.75) + scale_fill_gradientn (colors = c ("red",: нечисловой аргумент двоичного оператора