我想ggplot2 bar plot根據 Y 的值對a 進行漸變填充,但我想手動設定顏色。
我希望當 Y 值等于 2 時出現紅色,而不是資料框中 Y 的最大值。
uj5u.com熱心網友回復:
如果您先驗地知道您想要紅色的值是什么(在您的情況下為 2),您可以將中點設定為 (1) 的一半。
你的例子,但有一個額外的資料點來說明:
# d <- data.frame(x = 1:4, y= c(0.1, 0.3, 1, 0.6))
d <- data.frame(x = 1:5, y= c(0.1, 0.3, 1, 0.6, 2.0))
vals <- lapply(d$y, function(y) seq(0, y, by = 0.01))
y <- unlist(vals)
mid <- rep(d$x, lengths(vals))
d2 <- data.frame(x = mid - 0.4, xend = mid 0.4, y = y, yend = y)
ggplot(data = d2, aes(x = x, xend = xend, y = y, yend = yend, color = y))
geom_segment(size = 2)
scale_color_gradient2(low = "green4",
mid = "yellow",
high = "red",
midpoint = 1) # changed here
coord_cartesian(ylim = c(0 , 2))

如另一個答案的評論中所述,您不會在原始資料中看到紅色 - 在此處使用原始資料集重新運行代碼以查看結果。
uj5u.com熱心網友回復:
這行得通嗎?剛剛切換到scale_color_gradientn哪個允許我們使用values = 我們為相應顏色指定三個值的呼叫。(以及其他一些小變化。)
ggplot(data = d2, aes(x = x, xend = xend, y = y, yend = yend, color = y))
geom_segment(size = 2)
scale_y_continuous(limits = c(0, 2))
scale_color_gradientn(colours = c("green4", "yellow", "red"),
values = c("0", max(d2$y)/2, "2"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407003.html
標籤:
上一篇:手動縮放ggplot圖例
