R绘制轴标签:用infinity \ u221E替换具有unicode值的Inf

时间:2018-02-01 16:00:16

标签: r plot unicode axis-labels

在我的图中,我尝试用值' Inf'来替换轴标签。带有无穷大符号(例如unicode' \ u221e')。由于我有很多不同标签的情节,我不想手工制作。 我认为使用unicode比使用plotmath更容易。但是,我无法弄清楚如何实现目标。例如,我有以下向量:

xlab <- as.character(c(1:10,Inf))
x <- y <- 1:11
plot(x,y,xaxt="n")
axis(1,at=x,labels=gsub("Inf","\u221E",xlab))
axis(3,at=x,labels=gsub("Inf","\\u221E",xlab))

都不能工作。我错过了什么?谢谢你的帮助!

编辑于2018-02-06:

我错了,rawr的解决方案只在中途工作。我想我需要更多地澄清我的问题。

1)我想要循环使用许多不同的图(具有不同的xy和相应的xlab值)。这就是我尝试使用sub / gsub解决方案的原因,因为我不想写一百倍的标签。

2)我的第一个例子(axis(1,at=x,labels=gsub("Inf","\u221E",xlab)))无法在我的任何Windows机器上运行。不过,它正在研究debian。

3)rawr的解决方案确实存在一个问题,即无论有多少可用于注释的空间,它都会注释所有可用的标签。简单的例子:

x <- y <- exp(-1:11)
xlab <- as.character(c(Inf,10:-1))
plot(x,y,xaxt="n")
axis(1, at = x, labels = parse(text = gsub("Inf", "infinity", xlab)))

不太好。

我的Windows机器有什么解决方案吗?可能不是通过代码,而是通过更改某些设置?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试 axis(1, at=x, labels=c(1:10, expression(infinity)))

使用stringi包可以使用更灵活的方法来处理任何unicode字符:

axis(1, at=x, labels=c(1:10, stri_unescape_unicode('\\u221E')))