簡體   English   中英

如何使geom_rect隨R中的頻率着色?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM