首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日数据时间序列图的x轴标签错误

日数据时间序列图的x轴标签错误
EN

Stack Overflow用户
提问于 2014-10-11 00:43:22
回答 2查看 2.5K关注 0票数 2

我有4年的每日历史数据。我使用命令plot()绘制了时间序列,并将xaxt="n"用于自定义x轴。如果我想把每天的刻度和每一天的标签放在图中,我的曲线图就会变得太杂乱,所以我想只显示月份-年份的刻度。例如,如果我有3年的数据,我只想在x轴上放置36个刻度,每个刻度表示相应的年份和月份。我花了一天的时间阅读了很多关于如何自定义x轴的问题,但这些方法都不适用于我的情况。我真的不知道我还能做什么。下面是我使用的代码:

代码语言:javascript
运行
复制
plot(x,xaxt="n")
ticks <- seq.Date(as.Date("2007-01-01"),as.Date("2009-12-31"),"months")
labels <- seq(as.Date("2007-01-01"),as.Date("2009-12-31"),"months")
axis(1,ticks,labels,format="%b%Y")

我首先对ticks使用了以下代码:

代码语言:javascript
运行
复制
ticks<- seq(as.Date("2007-01-01"),as.Date("2009-12-31"),"months")

它不起作用,因为刻度应该是数字而不是字符。我看到here可以使用我使用的第一个代码,但它不适用于我的情况。我非常感谢任何人能在这方面给我一些提示。谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-10-11 03:45:36

我只能假设您的x是一个时间序列,例如zooxts对象。如果是这样的话,你可以使用plot.xts(...)的“特殊”参数。如果不是,则必须加载xts包,并将x转换为xts对象。

代码语言:javascript
运行
复制
# sample data - you have this already??
# historical daily data - SP500
library(quantmod)          # for getSymbols
SP500 <- getSymbols("SP500", src="FRED", auto.assign=FALSE)
class(SP500)               # an xts pbject
# [1] "xts" "zoo"
x <- SP500["2012::2014"]   # ~last 3 years

# you start here ## ASSUMES x is an xts object ##
par(mar=c(3,3,1,1),cex.axis=0.7)
plot(x, major.format="%b-%Y",minor.ticks=FALSE,mgp=c(0,0.5,0))

如果您想要更多的控制,请使用axTicksByTime(...)

代码语言:javascript
运行
复制
# "manual" tick marks
plot(x,xaxt="n")
ticks <- axTicksByTime(x,"months",format.labels="%b-%Y")
axis(1,at = .index(x)[ticks], labels = names(ticks),mgp=c(0,0.5,0))

更花哨一点。

代码语言:javascript
运行
复制
# insert line breaks into axis labels
plot(x,xaxt="n")
ticks <- axTicksByTime(x,"months",format.labels="%b-%Y")
axis(1,at = .index(x)[ticks], labels = sub("-","\n",names(ticks)))

票数 2
EN

Stack Overflow用户

发布于 2014-10-11 01:04:36

以下内容可能会有所帮助:

代码语言:javascript
运行
复制
> newticks = sapply(strsplit(as.character(ticks), split='-'), function(x) paste(x[1],x[2], sep='_') )
> newticks
 [1] "2007_01" "2007_02" "2007_03" "2007_04" "2007_05" "2007_06" "2007_07" "2007_08" "2007_09" "2007_10" "2007_11" "2007_12"
[13] "2008_01" "2008_02" "2008_03" "2008_04" "2008_05" "2008_06" "2008_07" "2008_08" "2008_09" "2008_10" "2008_11" "2008_12"
[25] "2009_01" "2009_02" "2009_03" "2009_04" "2009_05" "2009_06" "2009_07" "2009_08" "2009_09" "2009_10" "2009_11" "2009_12"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26304399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档