R:barplot {base}在x轴上完成缺失的整数值

时间:2017-10-25 18:07:08

标签: r

我每年都有一个计票数据。我的数据集中缺少2006年;但我想在x轴上将其显示为0。我认为应该可以将df$year转换为factor并设置因子级别,遵循以下示例:R - how to make barplot plot zeros for missing values over the data range?但我无法使其正常工作。

df<-data.frame(year = c(2005,2007,2008, 2009),
               area = c(10,20,30,15))

barplot(df$area)

enter image description here

我的工作没有尝试:

barplot(df$area, 
        names.arg = factor(df$year, 
                           levels = 2005:2009))

1 个答案:

答案 0 :(得分:3)

我们可以merge使用完整数据集,将NA元素替换为0,然后执行barplot

df1 <- merge(data.frame(year = min(df$year):max(df$year)), df, all.x=TRUE)
df1$area[is.na(df1$area)] <- 0
barplot(setNames(df1$area, df1$year))

-output

enter image description here

这也可以使用tidyverse

完成
library(tidyverse)
df %>%
   complete(year = min(year):max(year), fill = list(area = 0)) %>% 
   ggplot(., aes(year, area)) + 
   geom_bar(stat = 'identity') +
   theme_bw()

-output

enter image description here