我很难在现有的ggplot上添加一系列阴影矩形。在此先感谢您的帮助。
我首先使用geom_line制作时间序列折线图。我使用了数据框" unemp_table",并绘制了"月"在X,和" NYC.Employment"在Y.
unemp_table看起来像这样:
Month Sample NYC.Employment
(date) (int) (int)
1976-01-01 1 2771
1976-02-01 2 2770
1976-03-01 3 2769
1976-04-01 4 2768
我的ggplot代码(有效)如下所示:
unemp_graph <- ggplot(data=unemp_table, aes(x=Month,y=NYC.Employment))
+geom_line()
接下来,我想绘制一些阴影衰退条。
我首先加载了一个不同的数据框(Reces_table),其中包含每个相关衰退的开始和结束。
Reces_table看起来像这样:
Start End
(date) (date)
1 1980-01-01 1980-07-01
2 1981-07-01 1982-11-01
3 1990-07-01 1991-03-01
4 2001-03-01 2001-11-01
5 2007-12-01 2009-06-01
但是,当我尝试将这些点绘制为阴影矩形时,我会收到错误。
此代码:
unemp_graph + geom_rect(Reces_table, aes(xmin=Start, xmax=End,
ymin=-Inf, ymax=+Inf), fill='pink', alpha=0.2)
给我这个错误:
Error: ggplot2 doesn't know how to deal with data of class uneval
我在一个不同的主题中读到我需要添加&#34; data =&#34;进入geom_rect函数。但是,更新的代码:
unemp_graph + geom_rect(data=Reces_table,
aes(xmin=Start, xmax=End, ymin=-Inf, ymax=+Inf), fill='pink', alpha=0.2)
给我这个错误:
Error in eval(expr, envir, enclos) : object 'Month' not found
任何提示都将不胜感激,感谢您的帮助!
答案 0 :(得分:1)
你可以试一试。我将inherit.aes
参数添加到geom_rect
调用。
unemp_table <- read.table(text = "Month Sample NYC.Employment
1976-01-01 1 2771
1976-02-01 2 2770
1976-03-01 3 2769
1976-04-01 4 2768", header = TRUE,
stringsAsFactors = FALSE)
unemp_table$Month <- as.Date(unemp_table$Month)
Reces_table <- read.table(text = " Start End
1 1980-01-01 1980-07-01
2 1981-07-01 1982-11-01
3 1990-07-01 1991-03-01
4 2001-03-01 2001-11-01
5 2007-12-01 2009-06-01", header = TRUE,
stringsAsFactors = FALSE)
Reces_table$Start <- as.Date(Reces_table$Start)
Reces_table$End <- as.Date(Reces_table$End)
unemp_graph <- ggplot(data=unemp_table, aes(x=Month,y=NYC.Employment)) +
geom_line() + geom_rect(data= Reces_table, inherit.aes = FALSE,
aes(xmin=Start, xmax=End, ymin=-Inf, ymax=+Inf),
fill='pink', alpha=0.2)
根据文件:
inherit.aes
如果为FALSE,则覆盖默认美学,而不是与它们组合。这对于定义数据和美学的辅助函数最有用,并且不应该从默认的绘图规范继承行为,例如:边界。
调用ggplot
时,将aes
参数设置为aes(x = Month, y = NYC.Employment
。如果inherit.aes = FALSE
未通过geom_rect
,ggplot
会尝试将您输入aes
的{{1}}与默认geom_rect
合并(即在aes
的初始调用中设置。由于ggplot
中没有Month
,因此无法完成此操作。