我意识到解决这个问题肯定是非常微不足道的,但我出于某种原因无法理解它!
考虑以下向量(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轴上没有刻度的图,并且非常奇怪的比例。我不确定我做错了什么。
感谢您的帮助!
答案 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(...)
没有宽度和长度参数。