我想更改圖的一部分背景色。那可能嗎?僅在圖的一個區域上更改背景色
例如,使用下面的圖表,我可能想指出我對2到4噸重量的汽車特別感興趣,因此希望使用粉紅色背景突出顯示此區域。
更具體地說,我想覆蓋一個透明的粉紅色矩形,該矩形在x軸上從2延伸到4並覆蓋整個y軸區域。
我該如何編碼?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
我想更改圖的一部分背景色。那可能嗎?僅在圖的一個區域上更改背景色
例如,使用下面的圖表,我可能想指出我對2到4噸重量的汽車特別感興趣,因此希望使用粉紅色背景突出顯示此區域。
更具體地說,我想覆蓋一個透明的粉紅色矩形,該矩形在x軸上從2延伸到4並覆蓋整個y軸區域。
我該如何編碼?
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
矩形很容易使用geom_rect (documentation)。你只需要在調用geom_rect的aes中指定它的尺寸。在下面的代碼中更改alpha的透明度。
require(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point() +
geom_rect(aes(xmin = 2, xmax = 4, ymin = -Inf, ymax = Inf),
fill = "pink", alpha = 0.03))
這是否會產生類似於你之後的東西?
雖然這工作,我注意到它繪製許多矩形作爲數據點,這可能是一個問題,尤其是與磨製其中面之間點的數量變化。這通過非常低的α來反映,以獲得僅約50%的透明度。我認爲這是因爲它使用了從ggplot()調用的data.frame和美學。
避免這種情況的一種方法是在geom_point()內調用aes()並專門爲矩形創建一個data.frame。注意alpha如何大得多,但效果是相似的。
require(ggplot2)
ggplot(mtcars) + geom_point(aes(wt, mpg)) +
geom_rect(data=data.frame(xmin = 2, xmax = 4, ymin = -Inf, ymax = Inf),
aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), fill="pink", alpha=0.5)
PS是有辦法來告訴它簡單地覆蓋整個Y軸,而不是指定在y限制? – Megan
顯然是的,使用Inf來計算ymin/ymax。看我的編輯應該幫助。 –