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"))