[英]How can I make geom_rect to color with frequency in R?
我的問題是無法與scale_color_gradient2
一起使用geom_rect
。 如何根據頻率使不同矩形的顏色? 我看過文檔,它說可以在geom_tile
使用顏色,但是與geom_rect
。 我可以以某種方式根據頻率為geom_rect
嗎?
d=data.frame(x1=c(1,3,1,5,4), x2=c(2,4,3,6,6), y1=c(1,1,4,1,3), y2=c(2,2,5,3,5), freq=c('23','2','12','55','84'), r=c(1,2,3,4,5))
ggplot() +
scale_x_continuous(name="x") +
scale_y_continuous(name="y") +
geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2, fill=freq), color="black", alpha=0.5) +
geom_text(data=d, aes(x=x1+(x2-x1)/2, y=y1+(y2-y1)/2, label=r), size=4) +
scale_color_gradient2(low = "green", mid = "yellow", high = "red")
只要我可以按以下順序着色,任何方法都是可以接受的:綠色-黃色-紅色。
你好 如果我正確理解了這個問題,首先,您可能必須確保“頻率”列是數字而不是因數或字符。 然后,您應該使用scale_fill_gradient2
而不是scale_color_gradient2
。 最后,請確保在調用中調整midpoint
參數,否則它將默認設置為0。諸如此類的事情似乎可以滿足您的要求:
library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.5.1
d=data.frame(x1=c(1,3,1,5,4), x2=c(2,4,3,6,6), y1=c(1,1,4,1,3), y2=c(2,2,5,3,5),
freq=c('23','2','12','55','84'), r=c(1,2,3,4,5))
d$freq = as.numeric(as.character(d$freq))
ggplot() +
scale_x_continuous(name="x") +
scale_y_continuous(name="y") +
geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2, fill=freq),
color="black") +
geom_text(data=d, aes(x=x1+(x2-x1)/2, y=y1+(y2-y1)/2, label=r), size=4) +
scale_fill_gradient2(low = "green", mid = "yellow", high = "red",
midpoint = 45)
由reprex軟件包 (v0.2.1)創建於2018-09-20
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.