簡體   English   中英

向ggplot中的每個方面添加不同的矩形

[英]Adding a different rectangle to each facet in ggplot

我有一個 dataframe 我想在 4 個方面(按 ID)呈現,並且對於每個方面,用矩形突出顯示數據。

我的數據是:

dt<-data.frame(ID=c(rep(c("1","2","3","4"),2)),var=c(480,1180,170,130,500,1180,1450,750),
                 Method=c(rep(c("A","B"),each=4)))

我能找到的所有其他相關帖子都參考了創建一個新的 dataframe ,每個矩形的信息作為單獨的行。 因此,我創建了以下 dataframe:

rect<-data.frame(xmin = c(0.8, 0.8,0.8,0.8), xmax = c(2.2, 2.2, 2.2, 2.2), 
           ymin = c(430, 1130, 120, 80), ymax = c(550, 1230, 1500, 800), 
           alpha = c(.1, .1, .1, .1),
           fill = c("red", "green","orange","blue"))

我的ggplot代碼是:

ggplot(dt,aes(x=Method,y=var)) +
  geom_point() +
  annotate("rect", xmin = rect$xmin, xmax = rect$xmax, ymin = rect$ymin, ymax = rect$ymax,
           alpha = 0.1, fill = "green")+
  facet_wrap(~ID,ncol=4)+
  theme_bw()

這給了我以下信息: 使用注釋代碼繪圖

geom_rect 選項對我根本不起作用。 我只是收到有關缺少變量的錯誤消息。 我已經在 rect dataframe 中添加了一個 ID 和 Method 列,但這只是引發了 var 變量不存在的問題。 我考慮過將它們全部合並,但我不確定這是否能解決問題。 這是我嘗試與 geom_rect 一起使用的

geom_rect(data=rect, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
          alpha = 0.1,fill = "blue")+

根據 rect dataframe,我想要的只是每個方面的一個矩形。 並不是每個 dataframe 上的所有這些。 現在忽略顏色,如果它們都是綠色或藍色就可以了。

在此先感謝您的幫助。

我認為annotate()方法不允許刻面特異性,所以geom_rect()可能是 go 的方法。 您必須做的兩件事是 (1) 設置inherit.aes = FALSE或將全局aes()更改為geom_point()層和 (2) 將方面信息添加到 rect data.frame。

library(ggplot2)

dt<-data.frame(ID=c(rep(c("1","2","3","4"),2)),var=c(480,1180,170,130,500,1180,1450,750),
               Method=c(rep(c("A","B"),each=4)))

rect<-data.frame(xmin = c(0.8, 0.8,0.8,0.8), xmax = c(2.2, 2.2, 2.2, 2.2), 
                 ymin = c(430, 1130, 120, 80), ymax = c(550, 1230, 1500, 800), 
                 alpha = c(.1, .1, .1, .1),
                 fill = c("red", "green","orange","blue"))

ggplot(dt,aes(x=Method,y=var)) +
  geom_point() +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
            alpha = 0.1, fill = "green",
            data = transform(rect, ID = as.character(1:4)),
            inherit.aes = FALSE) +
  facet_wrap(~ID,ncol=4)+
  theme_bw()

代表 package (v1.0.0) 於 2021 年 4 月 12 日創建

小旁注,如果您希望矩形逐字逐句地從 data.frame 中進行填充,則可以在矩形aes()中使用fill = I(fill) (並刪除 aes 之外的填充分配)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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