我有一个R数据。有两个柱子的框架。var
列包含任何变量,而date
列包含日期的每日序列。我试图生成一个条形图,其中变量在Y轴上绘制,日期在X轴上绘制。
由于日期太多,所以添加每个月的第一天会很方便。我正在做以下工作:
# Example data
set.seed(1234)
df <- data.frame(
var = runif(n=365, min=1, max=20),
date = seq(from=as.Date('2021-01-01'), to=as.Date('2021-12-31'), by=1)
)
# Plot
barplot(df$var,
col="darkorange", border=NA, las=1, xaxt='n',
main="var: random variable")
dts <- seq(from=as.Date(df$date[1]), to=as.Date(df$date[nrow(df)]), by="months")
ind <- c()
for(d in 1:length(dts)){
m <- match(dts[d], df$date)
ind <- c(ind, m)
}
axis(1, at=ind, labels=df$date[ind])
box()
但是,X轴刻度明显向左移动。如果你看最后一个刻度(代表“2021-12-01”),它应该几乎出现在最后。
我该如何解决这个问题?
2条答案
按热度按时间xzv2uavs1#
我不知道如何在基础图形中修复您的绘图,但我可以展示一个简单的ggplot版本:
ctehm74n2#
更新:
How to put date on barplot() x-axis?使用公式方法是一个更容易的选择。我们仍然需要考虑并调整
width
:现在没有左移了!