ggplot2继续在x轴的Year变量末尾添加.5

时间:2018-06-19 19:44:40

标签: r ggplot2 visualization

因此,我尝试制作一个分组的条形图,其中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?预先感谢!

2 个答案:

答案 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())