从xts对象的图中删除y轴标签

4

这里是生成xts对象的图形代码:

require("quantmod")
getSymbols("SPY")
plot(Cl(SPY))

以下是生成的图表:

graph

你能否从xts对象的绘图中删除y轴值(价格)?

提示:传递yaxt ='n'无效。

3个回答

6

删除 y 轴很容易,但也会删除 x 轴。有几个选项:

1) 简单 -- 使用 plot.zoo

plot.zoo(Cl(SPY), yaxt="n", ylab="")

2) 较难 -- 从 plot.xts 中获取数据:

plot(Cl(SPY), axes=FALSE)
axis(1, at=xy.coords(.index(SPY), SPY[, 1])$x[axTicksByTime(SPY)],
  label=names(axTicksByTime(SPY)), mgp = c(3, 2, 0))

3) 修改plot.xts使其接受要绘制的轴向量和/或TRUE/FALSE参数,从而实现自定义功能。


我最喜欢简单的解决方案。借鉴动物园的遗产。谢谢。 - Milktrader
1
说实话,我不太常用plot.xtsplot.zoo具有更好的功能,并且它可以与xts对象“无缝协作”。 - Joshua Ulrich

2

补充 Joshua 的回答,要修改 plot.xts(),你只需要修改以下部分:

    if (axes) {
      if (minor.ticks) 
        axis(1, at = xycoords$x, labels = FALSE, col = "#BBBBBB")
      axis(1, at = xycoords$x[ep], labels = names(ep), las = 1,lwd = 1, mgp = c(3, 2, 0))
    #This is the line to change:
    if (plotYaxis) axis(2)
    }

显然,您需要将参数plotYaxis = TRUE添加到函数定义中。


0

您也可以尝试指定标签x和y为空,或不包含任何值/字符。在您的绘图命令中使用术语xlab="": 例如:plot(beers,ranking,xlab="",ylab="")

通过在引号之间不包含任何内容,R不会绘制任何东西。 使用此命令,您还可以指定标签,以使x轴的标签为“beer”,请使用术语xlab="beer"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接