首页 > 解决方案 > 在R中制作箱形图?

问题描述

我有一个数据集,我首先想按站点对它们进行分组,然后每年用不同的颜色制作箱形图?因此,输出图应在 x 轴(NR_B,NR_C....)中表示站点名称,并为每个具有不同颜色的站点表示每年的箱线图。我尝试使用以下代码,但它不起作用。有人可以帮助我吗?

ggplot(AllEstuaryData, aes(x=Site, y=TP, color=Year)) +
  geom_boxplot() +
  theme(axis.text.x=element_text(angle = 45, hjust=1))

Site	Year	TP
NR_B	2001	216
NR_B	2001	254
NR_B	2001	216
NR_B	2001	216
NR_B	2001	215
NR_B	2001	206
NR_B	2001	224
NR_B	2001	212
NR_B	2001	215
NR_B	2001	208
NR_B	2001	195
NR_B	2001	214
NR_B	2003	209
NR_B	2003	203
NR_B	2003	214
NR_B	2003	196
NR_B	2003	200
NR_B	2003	207
NR_B	2003	203
NR_B	2003	195
NR_B	2003	210
NR_B	2003	210
NR_B	2004	199
NR_B	2004	200
NR_B	2004	207
NR_B	2004	205
NR_B	2004	216
NR_B	2004	216
NR_B	2004	209
NR_B	2004	199
NR_B	2004	218
NR_B	2004	214
NR_B	2005	278
NR_B	2005	247
NR_B	2005	262
NR_B	2005	256
NR_B	2005	240
NR_B	2005	260
NR_B	2005	282
NR_B	2005	259
NR_B	2005	239
NR_B	2005	272
NR_B	2010	260
NR_B	2010	240
NR_B	2010	250
NR_B	2015	260
NR_B	2015	280
NR_B	2015	270
NR_B	2015	240
NR_B	2015	270
NR_B	2015	240
NR_B	2015	260
NR_B	2015	280
NR_B	2015	240
NR_B	2015	270
NR_B	2018	270
NR_B	2018	300
NR_B	2018	280
NR_C	2001	374
NR_C	2001	355
NR_C	2001	370
NR_C	2001	380
NR_C	2001	356
NR_C	2001	343
NR_C	2001	365
NR_C	2001	356
NR_C	2001	382
NR_C	2001	368
NR_C	2001	358
NR_C	2001	373
NR_C	2003	385
NR_C	2003	433
NR_C	2003	357
NR_C	2003	422
NR_C	2003	376
NR_C	2003	394
NR_C	2003	394
NR_C	2003	398
NR_C	2003	390
NR_C	2003	380
NR_C	2004	395
NR_C	2004	410
NR_C	2004	395
NR_C	2004	415
NR_C	2004	349
NR_C	2004	384
NR_C	2004	420
NR_C	2004	419
NR_C	2004	393
NR_C	2004	389
NR_C	2005	404
NR_C	2005	394
NR_C	2005	408
NR_C	2005	431
NR_C	2005	373
NR_C	2005	442
NR_C	2005	407
NR_C	2005	414
NR_C	2005	396
NR_C	2005	484
NR_C	2010	430
NR_C	2010	390
NR_C	2010	320
NR_C	2018	430
NR_C	2018	390
NR_C	2018	420
NR_D	2001	239
NR_D	2001	225
NR_D	2001	229
NR_D	2001	221
NR_D	2001	214
NR_D	2001	212
NR_D	2001	282
NR_D	2001	234
NR_D	2001	226
NR_D	2001	235
NR_D	2001	254
NR_D	2001	217
NR_D	2003	233
NR_D	2003	236
NR_D	2003	215
NR_D	2003	248
NR_D	2003	250
NR_D	2003	232
NR_D	2003	217
NR_D	2003	228
NR_D	2003	232
NR_D	2003	218
NR_D	2004	228
NR_D	2004	229
NR_D	2004	228
NR_D	2004	212
NR_D	2004	221
NR_D	2004	220
NR_D	2004	239
NR_D	2004	244
NR_D	2004	263
NR_D	2004	242
NR_D	2005	258
NR_D	2005	251
NR_D	2005	234
NR_D	2005	276
NR_D	2005	248
NR_D	2005	266
NR_D	2005	249
NR_D	2005	265
NR_D	2005	251
NR_D	2005	262
NR_D	2010	300
NR_D	2010	300
NR_D	2010	390
NR_D	2018	250
NR_D	2018	230
NR_D	2018	260
NR_E	2012	630
NR_E	2012	710
NR_E	2012	820
NR_E	2013	540
NR_E	2013	540
NR_E	2013	560
NR_E	2018	410
NR_E	2018	390
NR_E	2018	410
NR_E	2012	2100
NR_E	2012	1610
NR_E	2012	1800
NR_E	2013	1000
NR_E	2013	1000
NR_E	2013	1000
NR_E	2015	1490
NR_E	2015	1590
NR_E	2015	1490
NR_E	2015	1530
NR_E	2015	1320
NR_E	2015	1430
NR_E	2015	1670
NR_E	2015	1420
NR_E	2015	1400
NR_E	2015	1450
NR_E	2016	1560
NR_E	2016	1450
NR_E	2016	1500
NR_E	2018	2100
NR_E	2018	1760
NR_E	2018	1540

标签: r

解决方案


期望的输出

因此,输出图应在 x 轴(NR_B,NR_C....)中表示站点名称,并为每个具有不同颜色的站点表示每年的箱线图。

您需要通过fill/coloras factor(Year)。这将说明ggplot这是一个离散的类别。

ggplot(df, aes(x=Site, y=TP, fill=factor(Year))) +
  geom_boxplot() +
  theme(axis.text.x=element_text(angle = 45, hjust=1))+
  scale_fill_brewer(palette = "Set3")+
  theme(legend.position = "bottom")

生产 在此处输入图像描述

这不在问题范围内,但是,考虑到数据的性质,您可能需要考虑不同类型的可视化。

ggplot(df, aes(factor(Year), TP))+
 geom_jitter(width = 0.2) +
 facet_wrap(~Site, scales="free_y")

在此处输入图像描述


推荐阅读