我每年都有一个计票数据。我的数据集中缺少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)
我的工作没有尝试:
barplot(df$area,
names.arg = factor(df$year,
levels = 2005:2009))
答案 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
这也可以使用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