在R中自定义绘图轴的问题

时间:2013-12-19 16:06:27

标签: r plot axis

我意识到解决这个问题肯定是非常微不足道的,但我出于某种原因无法理解它!

考虑以下向量(zoo对象)

 library(zoo)
 h1 = c(-0.0130944, -0.0132586, -0.0132235, -0.0131435, -0.0134029, -0.0128966, -0.0130439)
 h1.zoo = zoo(h1, order.by = as.Date(c("2013-12-09", "2013-12-10", "2013-12-11", "2013-12-12", "2013-12-13", "2013-12-16", "2013-12-17"))

我想绘制矢量h1.zoo,y轴限制为-0.2到0.我希望y轴与x轴的交点为y = -0.2

我尝试了以下内容:

 jpeg( out.jpg, width=800, height=600 )     
 par(mai = c(1,2,1,0.7), cex=1.6, xaxs='i',yaxs='i', xpd = TRUE, width = 800, height = 600)
 if (!all( is.na(h1.zoo)))
 {
     plot( na.trim(h1.zoo), main="", xlab="Date", ylab="", yaxt = "n", bty = "n", cex.axis = 0.8)
     axis(2, las = 2, cex.axis = 0.8, at = seq(-0.02, 0, 0.002), labels = seq(-0.02, 0, 0.002), ylim = c(-0.02,0))
     title(ylab = "Contribution to Expected Return (in %)", line = 4)
 }
 dev.off()

但是这会产生一个在y轴上没有刻度的图,并且非常奇怪的比例。我不确定我做错了什么。

enter image description here

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

怎么样:

   plot( as.numeric(na.trim(h1.zoo)), main="", xlab="Date",
      ylab="", yaxt = "n",xaxt="n", axes = F,ylim = c(-0.02,-0.01), type = 'l')
   axis(1,pos=-0.02)
   axis(2,pos=1)

答案 1 :(得分:0)

这是你的想法

代码:(使用提供的数据)

par(mai = c(1,2,1,0.7), xaxs='i',yaxs='i', xpd = F)
plot( na.trim(h1.zoo), main="", xlab="Date", ylab="", yaxt = "n", bty = "n", cex.axis = 0.6, ylim=c(-0.0135,-0.0128))
axis(2, las = 2, cex.axis = 0.6, at = seq(-.014,-.012,.0001))
title(ylab = "Contribution to Expected Return (in %)", line = 3)

这里有几件事情。

首先,您需要在plot命令中指定ylim=,否则plot(...)将默认为数据的最大值和最小值。在你的情况下是(-0.0134,-0.0129)。然后,当您以0.002为增量指定范围为-0.02 to 0的轴刻度时,axis(...)将此值应用于plot(...)中隐式设置的范围。但是在这个范围内没有刻度线。

其次,您需要设置xpd=F以正确剪裁轴。

第三,par(...)没有宽度和长度参数。