在ggplot2/geom_tile中,超出限制的填充顏色怎么改? 由于圖片Region_4/5超出limis(1,11),所以填充顏色默認為灰色,如何將'Region_4'改為'darkblue','Region_5'改為'黑色的' 。謝謝!
library(tidyverse)
library(RColorBrewer)
tile_data <- data.frame(category=letters[1:5],
region=paste0('region_',1:5),
sales=c(1,2,5,0.1,300))
tile_data %>% ggplot(aes(x=category,
y=region,
fill=sales))
geom_tile()
scale_fill_gradientn(limits=c(1,11),
colors=brewer.pal(12,'Spectral'))
theme_minimal()

uj5u.com熱心網友回復:
如果您想保持梯度比例并為上下限設定兩個額外的離散值,我認為最簡單的方法是為“限制內”和“限制外”值設定單獨的填充比例。這可以通過在資料子集上單獨呼叫 geom_tile 以及使用諸如 {ggnewscale} 之類的包來完成。
我認為將離散的“禁區”放在漸變顏色條的各個極端是有意義的。然后您需要三個geom_tile呼叫和三個scale_fill呼叫,并且您需要在每個scale_fill呼叫中指定引導順序。然后,您將需要處理圖例邊距,但讓它看起來沒問題并不是什么大問題。
library(tidyverse)
library(RColorBrewer)
tile_data <- data.frame(
category = letters[1:5],
region = paste0("region_", 1:5),
sales = c(1, 2, 5, 0.1, 300)
)
ggplot(tile_data, aes(
x = category,
y = region,
fill = sales
))
geom_tile(data = filter(tile_data, sales <= 11 & sales >=1))
scale_fill_gradientn(NULL,
limits = c(1, 11),
colors = brewer.pal(11, "Spectral"),
guide = guide_colorbar(order = 2)
)
ggnewscale::new_scale_fill()
geom_tile(data = filter(tile_data, sales > 11), mapping = aes(fill = sales > 11))
scale_fill_manual("Sales", values = "black", labels = "> 11", guide = guide_legend(order = 1))
ggnewscale::new_scale_fill()
geom_tile(data = filter(tile_data, sales < 1), mapping = aes(fill = sales < 1))
scale_fill_manual(NULL, values = "darkblue", labels = "< 1", guide = guide_legend(order = 3))
theme_minimal()
theme(legend.spacing.y = unit(-6, "pt"),
legend.title = element_text(margin = margin(b = 10)))

由
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364226.html
上一篇:Y軸沒有排序,ggplot
