我正在使用 ggplot2 绘制德国所有地区在特定时间段(“期间”)内建造的建筑物数量(“N”)。
时间段的持续时间不尽相同。我希望箱线图的宽度反映时间段的持续时间(“年”),即更宽的持续时间更长。
数据框:
NUTS3_ID ARS_Codes Location period N Years no_highlight
<chr> <chr> <chr> <fct> <dbl> <dbl> <lgl>
1 DEF01 01001 Flensburg, Stadt Before 1919 2362 10 TRUE
2 DEF01 01001 Flensburg, Stadt 1919 - 1948 1955 9 TRUE
3 DEF01 01001 Flensburg, Stadt 1949 - 1978 7012 9 FALSE
4 DEF01 01001 Flensburg, Stadt 1979 - 1986 1487 7 FALSE
5 DEF01 01001 Flensburg, Stadt 1987 - 1990 411 3 FALSE
6 DEF01 01001 Flensburg, Stadt 1991 - 1995 654 4 FALSE
7 DEF01 01001 Flensburg, Stadt 1996 - 2000 1182 4 FALSE
8 DEF01 01001 Flensburg, Stadt 2001 - 2004 753 3 FALSE
9 DEF01 01001 Flensburg, Stadt 2005 - 2008 686 3 FALSE
10 DEF01 01001 Flensburg, Stadt 2009 and later 293 2 FALSE
# … with 4,110 more rows
# ℹ Use `print(n = ...)` to see more rows
在此数据框中,变量“no_highlight”用于按颜色格式化箱线图。相关列是“period”、“N”和“Years”。
用于制作boxpot的代码:
ggplot(df2, aes(x=period, y=N, fill = no_highlight)) +
geom_boxplot() +
labs(x = "Period",y = "Number of Buildings Constructed") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
scale_fill_manual(values=c("grey", "white")) +
scale_alpha_manual(values=c(1,0.1)) +
theme(legend.position = "none")
我最初尝试使用 varwidth,但是框的宽度没有连接到 x 变量,所以这样不好。
为简单起见,我创建了一个新列“年”,其中包含每个时期的持续时间,并希望使框的宽度与持续时间成正比。