轮廓图x标记

时间:2014-05-24 17:44:00

标签: r plot

我的问题与this问题非常相似,但我希望在x轴上写出特殊值 我有以下代码:

  

x < - c(1:12)
  y&lt; -c(1:12)
  filled.contour(c(2,4,7,10,14,21,30,60,90,120,180,365),y,outer(x,y))

给出以下图:enter image description here

我的问题是我不希望在左边挤压绘图,但希望c(2,4,7,10,14,21,30,60,90,120,180,365)中的所有值在x轴上等间距。

我该怎么做?
作为扩展,如何在x轴上放置字符"two""four",...而不是2,4,...?

由于

1 个答案:

答案 0 :(得分:2)

这是一个开始:

x <- 1:12
y <- 1:12
xvals <- c(2,4,7,10,14,21,30,60,90,120,180,365)
fx <- as.numeric(as.factor(xvals))
filled.contour(fx, y, outer(x,y),
               plot.axes= {
                   axis(2)  ## plain
                   axis(1,at=fx,labels=xvals)
               })

enter image description here

但是,您可以看到'180'标签已经被省略,这意味着如果您将x轴标签翻译成单词会更糟糕(你真的想要读取最后一个标签) “三百六十五”)? (您可以使用par(las=3)将标签垂直转换,但这也很难看。)

This question将我们指向qdap::replace_number(),但它似乎不适用于一位数字......

 library(qdap)
 filled.contour(fx, y, outer(x,y),
                plot.axes= {
                    axis(2)  ## plain
                    axis(1,at=fx,labels=replace_number(xvals))
 })

更新the qdap maintainer has already fixed this bug;如果您需要最新版本,可以尝试devtools::install_github("qdap","trinker")

enter image description here

如果你匆忙,你可以手工修复结果。