因此,我尝试制作一个分组的条形图,其中x轴上为JSON
,y上为Year
,按Number
分组,并以Nationality
刻面。下面是数据的视图(中间是2017,因此未显示)。
Municipality
由于某种原因,ggplot2会在一个刻度上保持x轴为“ 2016”,然后在下一刻度上保持“ 2016.5”,依此类推,直到2018.5。我不知道为什么要这样做,因为在我的年份变量中,这些年份中的任何一个年份后都没有.5。 Here是我的粗糙图形的样子,在底部显示了怪异的轴。
我的代码如下,抱歉。
> head(pres_munic)
Year Municipality Nationality Number
1 2016 Tapachula, Chiapas Salvadoran 2141
2 2016 Acayucán, Veracruz Salvadoran 4697
3 2016 Tuxtla Gutiérrez, Chiapas Salvadoran 2327
4 2016 Centro, Tabasco Salvadoran 1811
> tail(pres_munic)
Year Municipality Nationality Number
1328 2018 San Pedro Tapanatepec, Oaxaca Honduran 365
1329 2018 Huehuetán, Chiapas Honduran 417
1331 2018 Iztapalapa, CDMX Honduran 247
1332 2018 Saltillo, Coahulia Honduran 352
任何人都知道我该如何更改?或至少使它成为轴仅显示2016、2017、2018?预先感谢!
答案 0 :(得分:1)
由于Year
是数字,因此ggplot会将其解释为可以用小数点分隔的连续数据。为防止这种情况,我们可以使用scale_x_continuous
指定刻度线的位置:
ggplot(pres_munic, aes(Year, Number)) +
facet_wrap(~ Municipality) +
geom_bar(aes(fill = Nationality), width = 0.4, position = position_dodge(width=0.5), stat="identity") +
scale_x_continuous(breaks = 0:2100) +
theme(legend.position="top", legend.title =
element_blank(),axis.title.x=element_blank(),
axis.title.y=element_blank())
答案 1 :(得分:1)
如果有很多年,该解决方案将看起来很糟糕。您可能要使用ggplot的自动日期缩放。
pres_munic$Date <- as.Date(paste(pres_munic$Year, 1, 1, sep="-"))
ggplot(pres_munic, aes(Date, Number)) +
facet_wrap(~ Municipality) +
geom_bar(aes(fill = Nationality), width = 0.4, position = position_dodge(width=0.5), stat="identity") +
scale_x_date(date_labels = "%Y") +
theme(legend.position="top", legend.title =
element_blank(),axis.title.x=element_blank(),
axis.title.y=element_blank())