R格子x轴刻度线间距

时间:2014-07-29 12:18:59

标签: r rstudio lattice

根据日期绘制一些值,如

01/31/1996      -7.3667
02/29/1996       0.9413
03/31/1996       9.3252
04/30/1996       0.3147
05/31/1996       8.8593
06/30/1996      10.0297
07/31/1996       0.64i3
08/31/1996       2.1397
09/30/1996       0.6759
10/31/1996      -1.5579
11/30/1996       2.9493
....             ....
goes on till 2012 Nov

在R格子中使用条形图,我得到了一个合理的图形,但x轴上的标签都被挤压在一起,看起来像一个巨大的文本。我认为它以字面形式从上面输出每个日期并尝试将其全部放入空间但我真正喜欢的只是4或5个标记增量4年像

1996            20000            2004            2008            2012 

均匀分开

我不确定如何解释这些日期,只使用tick.marks = 5或scales = list(x = list(at = seq(1996,2012,4))不起作用。我也是尝试了以下但是刻度线不均匀(有时在4年内,有时是5年),并不真正对应于实际数据的确切位置。

> df <- data.frame(x=paste0(rep(1996:2012, each=12), paste0("Q", 1:12)), y=1:204)
> x.tick.number <- 10
> x.tick.number <- 8
> at <- seq(1, nrow(df), length.out=x.tick.number)
> labels <- round(seq(1996, 2012, length.out=x.tick.number))
> barchart(V3~V1,  data = differences,col=c("green3"),origin=0,box.ratio=40, lty=0,reference=TRUE,stack=TRUE,main ="testing",ylab = list("values", cex=1.3), xlab = list
("dates",cex=1.3),par.settings=list (axis.text=list(cex=1.5), axis.line = list(lwd=3)),scales=list(y=list(tick.number=8, rot=90 ), x=list(at=at, labels=labels)))

还有其他建议吗?此外,我在y轴上的日期范围为-25到20,刻度标记的增量为5,但我在每个范围内都有5个较小的刻度线。我该如何控制它。感谢。

1 个答案:

答案 0 :(得分:0)

我假设您将每个月绘制为不同的条形图,并且每个月都是hte数据。如果是这样,我认为你可以这样做:

My_at<-c(6,54,102,150,198)

这标志着1996年,2000年,2004年,2008年和2012年的6月

然后在barchart函数中:

scales=list(x=list(at=at,labels=c("1996","2000","2004","2008","2012")))

如果没有可重复的例子我无法测试 - 但这是基本的想法。

如果您没有每月的数据,则需要相应地更改at中的值。

编辑以回应评论

labels争论中的数字(例如“2000”,“2004”等)只是用于刻度标签的文本,可以根据需要进行更改。放置在'My_at`中的值只是条形码 - 所以6表示将刻度标签放在第6个栏下面,54表示第54个栏,依此类推。如果需要,您可以在标签之外放置标签(例如第500条)。要将最后一个刻度移动到左侧,只需减少最后一个数字。我将它设为192而不是198,这相当于2012年1月。

最后绘制刻度线使用:

scales=list(x=list(at=at,labels=c("1996","2000","2004","2008","2012"), draw=TRUE,
              tck=2 ))

draw=TRUE表示应绘制标签和刻度线,tck=2控制刻度线的长度。你可以尝试不同的值来找到你喜欢的值。