簡體   English   中英

添加geom_rect時對象消失

[英]object disappearing when geom_rect is added

我有數據:

Distance   Average    Standard.error     CI
   -300  0.9338864     0.01409078   0.02761792
   -150  0.9339457     0.02097350   0.04110805
    -50  0.9495119     0.01359277   0.02664183
     50  0.8588988     0.03599673   0.07055359
    150  0.8531203     0.03047781   0.05973651
    300  0.7945437     0.05874081   0.11513199

我正在ggplot2中創建一個圖形,到目前為止,我的代碼是:

ggplot(data = Test, aes(x = Distance, y = Average))+
  geom_errorbar(aes(ymin = Average - CI, ymax = Average + CI), width = 5)+
  geom_point(data = Test, aes(x = Distance, y = Average), stat = "identity", 
             point = 21, fill = "white")+
  scale_x_continuous(breaks = seq(-300,300,100))+
  scale_y_continuous(breaks = seq(0.6,1,0.05))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"),
        axis.text.x = element_text(colour = "black"), 
        axis.text.y = element_text(colour= "black"))

我想在圖表的x軸上從-300到0添加灰色背景,因此創建了以下數據框:

background <- data.frame( xstart = 300, xend = 0, col = "grey")

然后將此行添加到圖形的腳本中:

geom_rect(data = background, aes(xmin = xstart, xmax = xend, ymin = -Inf, ymax = Inf,
                                 fill = col), alpha = 0.4)

所以該圖的代碼現在看起來像這樣:

ggplot(data = Test, aes(x = Distance, y = Average))+
  geom_rect(data = background, aes(xmin = xstart, xmax = xend, ymin = -Inf,    ymax = Inf,
                                   fill = col), alpha = 0.4)+
  geom_errorbar(aes(ymin = Average - CI, ymax = Average + CI), width = 5)+
  geom_point(data = Test, aes(x = Distance, y = Average), stat = "identity", 
             point = 21, fill = "white")+
  scale_x_continuous(breaks = seq(-300,300,100))+
  scale_y_continuous(breaks = seq(0.6,1,0.05))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"),
        axis.text.x = element_text(colour = "black"), 
        axis.text.y = element_text(colour= "black"))

但是現在當我嘗試生成表示以下內容的圖形時,我收到一條錯誤消息:

Error in eval(expr, envir, enclos) : object 'Distance' not found

在添加geom_rect線之前,該圖制作良好,為什么添加該線會使“ Distance”消失?

我認為這是因為geom_rect從最初的ggplot調用中獲得了xy美感(即使它不需要或不了解它們)並且無法在background找到它們。

為什么不直接輸入xstartxend等而不是創建background呢?

ggplot(data = Test, aes(x = Distance, y = Average))+
  geom_rect(aes(xmin = 0, xmax = 300, ymin = -Inf, ymax = Inf),
                                   fill = 'grey', alpha = 0.4)+
  geom_errorbar(aes(ymin = Average - CI, ymax = Average + CI), width = 5)+
  geom_point(data = Test, aes(x = Distance, y = Average), stat = "identity", 
             point = 21, fill = "white")+
  scale_x_continuous(breaks = seq(-300,300,100))+
  scale_y_continuous(breaks = seq(0.6,1,0.05))+
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        panel.background = element_blank(), axis.line = element_line(colour = "black"),
        axis.text.x = element_text(colour = "black"), 
        axis.text.y = element_text(colour= "black"))

注意-我從geom_rect的'aes'中取出了'fill',以便將填充顏色解釋為文字顏色'grey',而不是恰好具有值“ grey”的因數(然后ggplot將使用任何通常用於因素的默認配色方案)。 我覺得你其實可以采取一切出的aes呼叫geom_rect那里。

暫無
暫無

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

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