R ggplot-x轴显示更长时间内超出指定范围的数据

R ggplot-x轴显示更长时间内超出指定范围的数据,r,ggplot2,graph,R,Ggplot2,Graph,以下是按两组划分的公司净收入的一些样本数据: data <- data.frame(dates = rep(seq(as.Date("2000/1/1"), by = "month", length.out = 48), each = 2), revenue = rep(seq(10000, by = 1000, length.out = 48), each = 2) * rnorm(96, mean = 1, sd = 0.1),

以下是按两组划分的公司净收入的一些样本数据:

data <- data.frame(dates = rep(seq(as.Date("2000/1/1"), by = "month", length.out = 48), each = 2),
                   revenue = rep(seq(10000, by = 1000, length.out = 48), each = 2) * rnorm(96, mean = 1, sd = 0.1),
                   cohort = c("Group 1", "Group 2"))

但如果我将日期范围扩大到两年或更长时间,并重新运行图表,它会在x轴两侧显示额外的月份,尽管在y轴上没有显示任何信息

start = "2000-01-01"
end = "2001-12-01"
#rerun the ggplot code from above

请注意1999-12-01和2002-01-01的不存在数据点。为什么会出现这些函数?我如何删除它们?

许多(全部?)的
scale.*
函数将
expand=
作为参数。在R图(基本图和
ggplot2
)中,通常会稍微扩展轴(我认为每端都有4%),这样就不会将任何线/点挤压到“长方体”边界上

如果您包括
expand=c(0,0)
,您将得到您想要的

(顺便说一句:你有不匹配的参数。在这里修复。)

ggplot(数据,aes(填充=队列,x=日期,y=收入))+
几何图形栏(stat=“identity”,position=position\u道奇(width=NULL))+
xlab(“月份”)+
ylab(“净收入”)+
几何图形文本(aes(标签=圆形(收入,0)),vjust=-0.5,大小=3,位置=位置减淡(宽度=25))+
缩放日期(日期=1个月),限制=截止日期(c(开始,结束)),扩展=c(0,0))+
ggtitle(“集团月度收入”)+
主题_极小值()+
主题(axis.text.x=element\u text(角度=60,hjust=1),plot.title=element\u text(hjust=0.5))+
刻度填充手动(数值=c(“#00BFC4“,“#F8766D”))

我不确定到底是什么问题,但如果您将x轴上的“日期”类更改为任何其他类,它似乎可以按预期工作。在将数据传递到
ggplot
之前,还要过滤特定范围的数据

例如,在本例中,将日期更改为月-年格式

library(dplyr)
library(ggplot2)

start = as.Date("2000-01-01")
end = as.Date("2001-12-01")
all_fac <- c(outer(month.abb, 2000:2001, paste, sep = "-"))

data %>%
  filter(between(dates, start, end)) %>% 
  mutate(dates = factor(format(dates, "%b-%Y"),levels = all_fac)) %>% 
  ggplot() + aes(fill = cohort, x = dates, y = revenue) +
  geom_bar(stat = "identity", position = "dodge") +
  xlab("Month") + 
  ylab("Net Revenue") +
  geom_text(aes(label = round(revenue, 0))) + 
  ggtitle("Monthly Revenue by Group") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1), plot.title = 
  element_text(hjust = 0.5)) +
  scale_fill_manual(values=c("#00BFC4", "#F8766D"))
库(dplyr)
图书馆(GG2)
开始=截止日期(“2000-01-01”)
完=截止日期(“2001-12-01”)
全部费用%
筛选器(在(日期、开始、结束)之间)%>%
突变(日期=因子(格式(日期,“%b-%Y”),级别=所有fac))%>%
ggplot()+aes(填充=队列,x=日期,y=收入)+
几何图形栏(stat=“identity”,position=“dodge”)+
xlab(“月份”)+
ylab(“净收入”)+
几何图形文本(aes(标签=圆形(收入,0)))+
ggtitle(“集团月度收入”)+
主题_极小值()+
主题(axis.text.x=元素\文本(角度=60,hjust=1),plot.title=
元素文本(hjust=0.5))+
刻度填充手动(数值=c(“#00BFC4“,“#F8766D”))


请美化/更改吧台上的标签

(默认扩展取决于刻度;连续刻度为5%,离散刻度为0.6个单位,至少在ggplot中是这样。)我怀疑我头脑中的4%只是基于基本图形。谢谢
library(dplyr)
library(ggplot2)

start = as.Date("2000-01-01")
end = as.Date("2001-12-01")
all_fac <- c(outer(month.abb, 2000:2001, paste, sep = "-"))

data %>%
  filter(between(dates, start, end)) %>% 
  mutate(dates = factor(format(dates, "%b-%Y"),levels = all_fac)) %>% 
  ggplot() + aes(fill = cohort, x = dates, y = revenue) +
  geom_bar(stat = "identity", position = "dodge") +
  xlab("Month") + 
  ylab("Net Revenue") +
  geom_text(aes(label = round(revenue, 0))) + 
  ggtitle("Monthly Revenue by Group") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 60, hjust = 1), plot.title = 
  element_text(hjust = 0.5)) +
  scale_fill_manual(values=c("#00BFC4", "#F8766D"))