格子图中格式化轴标签

时间:2012-09-11 17:07:14

标签: r formatting plot lattice

如何在以下图表中将y轴标签格式更改为常规(xxx.xxx)而非科学?

df <- read.table(textConnection("
    ypogr_act  amount           cumSum
2012-09-20     30.00              30.00
2012-11-19   1834.69            1864.69
2012-11-30   2915.88            4780.57
2012-11-30   2214.98            6995.55
2012-12-18  21815.00           28810.55
2012-12-19 315000.00          343810.55
2012-12-21   1050.00          344860.55
2012-12-28   1300.00          346160.55
2013-01-10   1836.77          347997.32
2013-01-17 122193.00          470190.32
2013-03-22 415000.00          885190.32
")->con,header=T);close(con)

library(lattice)
library(zoo)
x <- zoo(df[2:3], df$ypogr_act)

win.graph(12,8)

print( xyplot(x, lwd=2,xlab='Μήνας',
              col=c(rgb(127, 201, 127, max = 255),rgb(56, 108, 176, max = 255)),
              scales = list(y=list(rot = 0,abbreviate=FALSE)) ))
trellis.focus("panel", 1, 1, highlight = F)
panel.grid(h = -1, v = 0, col = "grey", lty = 3)
trellis.unfocus()

1 个答案:

答案 0 :(得分:4)

编辑 是一个更简单的解决方案:只需设置options(scipen=10)然后运行您的代码即可。要暂时更改选项,您可以执行以下操作:

oscipen <- options(scipen=10)
## <Your plotting code>
options(oscipen)

可能有一个更简单的解决方案,但这就是我要做的事情:

## Write a customized axis annotation function 
## (Uses latticeExtra::xscale.components.log() et al. as templates.)
yscale.components.custom <- function (lim, logsc = FALSE, ...) {
    ans <- yscale.components.default(lim, logsc = logsc, ...)
    ans$left$labels$labels <- format(ans$left$labels$at, digits=3, scientific=10)
    ans
}

## Point to the customized function via xyplot's 'yscale.components=' argument
xyplot(x, lwd=2,xlab='???a?',
       col=c(rgb(127, 201, 127, max = 255),rgb(56, 108, 176, max = 255)),
       scales = list(y=list(rot = 0,abbreviate=FALSE)),
       yscale.components = yscale.components.custom)