R语言 Map轴标签中的度符号不正确

ssgvzors  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(144)

如果我使用geom_sf创建Map,轴标签中的度数符号是错误的,我得到的度数符号在文本中垂直居中,而不是像supercipts那样凸起。
例如,

library(sf)                                            
library(ggplot2)                                       
nc = st_read(system.file("shape/nc.shp", package="sf"))

ggplot() +                                             
  geom_sf(data = nc) +
  theme(axis.text = element_text(size=16))

当我在网上看到示例时,它们通常看起来是正确的(例如,下面的图像,复制自here),所以我猜它与我的本地设置中的某个东西有关。

我试过改变字体,使用library(extrafont),但这个问题仍然存在于我尝试的每一个字体。

更新

我不认为这是ggplot特有的问题,因为我在plotmath中使用degree关键字的任何图形上都得到同样的结果。

par(mar=c(0,0,0,0))
plot.new()
text(0.5,0.5, bquote(120*degree*N), cex=5)

我在Linux(Kubuntu 19.04),R 3.5.2,ggplot2 v. 3.2.1,sf v. 0.7 - 7上。不知道还有什么其他信息可能是相关的,但我可以用任何其他要求更新答案。

5uzkadbs

5uzkadbs1#

终于设法追查到了答案:
从?X11开始显示:
在安装了Wine符号字体的Linux系统上,出现了符号(例如引号(pi)和表达式(10^degree))呈现不正确的问题- fontconfig会首选此字体,并误解其编码。将以下行添加到'~/.fonts.conf'或'/etc/fonts/local.conf'中,可以通过首选URW Type 1符号字体来避免此问题。

<fontconfig>
<match target="pattern">
  <test name="family"><string>Symbol</string></test>
  <edit name="family" mode="prepend" binding="same">
    <string>Standard Symbols L</string>
  </edit>
</match>
</fontconfig>

将这些行添加到/etc/fonts/local.conf中为我解决了这个问题。

7eumitmz

7eumitmz2#

我遇到了一个类似的问题,在阅读了这里和其他一些相关的问题后,我找到了一个解决方案。
我的解决方案是工具-〉全局选项,在这里我改变了我的后端开罗。
这是它看起来的变化:

hk8txs48

hk8txs483#

作为一个变通办法,我正在手动创建轴标签。仍然在寻找一个更好的解决方案和解释不希望出现的行为。

xlabs = seq(-84,-76, 2)
ylabs = seq(34, 36.5, 0.5)
ggplot() +                                             
  geom_sf(data = nc) +
  scale_x_continuous(breaks = xlabs, labels = paste0(xlabs,'°W')) +
  scale_y_continuous(breaks = ylabs, labels = paste0(ylabs,'°N')) +
  theme(axis.text = element_text(size=16))

相关问题