等高线图x标记

用户88595

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

x <-c(1:12)
y <-c(1:12)
填充轮廓(c(2,4,7,10,14,21,30,60,90,120,180,365),y,外(x,y ))

给出以下情节:在此处输入图片说明

我的问题是我不希望将图挤压到左侧,而是希望所有值在c(2,4,7,10,14,21,30,60,90,120,180,365)x轴上均等分布。

我怎样才能做到这一点?
作为扩展,如何在x轴上放置字符"two",,"four"...而不是2、4...。

谢谢

本·博克(Ben Bolker)

这是一个开始:

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)
               })

在此处输入图片说明

但是,您会看到'180'标签已经被省略,这意味着如果将x轴标签翻译成单词,情况将会变得更糟(您是否真的希望最后一个刻度标签显示为“三百个六十五”)?(您可以par(las=3)用来将标签垂直放置,但这也很丑陋。)

这个问题将我们指向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))
 })

更新qdap维护者已经修复了这个bug ; 如果您需要最新版本,可以尝试devtools::install_github("qdap","trinker")

在此处输入图片说明

如果您很着急,可以手动解决结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章