我制作的任何 map :
ggplot() + geom_sf()
生成预期的 map ,但未正确显示度数符号,如下图所示。
此答案中给出的答案是关于 SO - degree symbol incorrect in map axis labels - 没有帮助,当我看到不同的标志时,我发布了一个单独的问题。
更改字体无济于事。
我也试过安装
sf
的当前版本(0.9) 来自 Github 在一个单独的项目中 renv
,但结果相同。我在 Linux 上,Fedora 31。
复制:
library("ggplot2")
library("sf")
nc <- st_read(system.file("shape/nc.shp", package="sf"))
ggplot() +
geom_sf(data = nc)
2019-03-15 更新
该问题并非特定于 ggplot/geom_sf;正如评论中所建议的,我遇到了与
plot.new(); text(0.5,0.5, bquote(120*degree*N), cex=5)
相同的问题另外,澄清一下,我没有在
?X11()
的帮助中详细说明与 Wine 相关的问题。 .如果我在终端中运行,fc-match Symbol
,我得到:StandardSymbolsPS.t1: "Standard Symbols PS" "Regular"
更新 2019-03-19
在全新的 Fedora 31 和 Fedora 32 beta 安装中得到确认。可能是 Fedora 的问题。
我尝试了不同的语言环境(包括例如“en_US.UTF-8”或“德语”)和设备(例如
cairo_pdf()
、 cairo_ps()
),结果相同。X11.options() 将“cairo”显示为类型(将其更改为 Xlib,或者 dbcairo 不会更改结果)。
使用
TestChars()
dww 在下面的答案中提出的函数显示如下:但是,如果我用 knitr 编织到 pdf,我会得到大多数符号,包括°。
如果我编织到 html,我会得到通常的乱码。
2020-03-20 更新
正如@jpmam1 所建议的,这似乎与
pango
中的回归有关。 ,这可以通过降级 pango
暂时修复.然而,降级 pango 会破坏操作系统的其他核心部分,例如 nautilus
.我在 Fedora 上打开了一个错误:https://bugzilla.redhat.com/show_bug.cgi?id=1815128
最佳答案
以下是使用在 Fedora 31 VirtualBox VM 上运行的 R (ver3.6.3 2020-02-29)/R Studio (ver1.2.5033) 解决您的问题的两种解决方案:
1) 使用自定义比例插入 unicode 字符以生成正确的符号(包括 N/S 或 E/W,具体取决于您的 long/lat):
#install.packages("ggplot2")
#install.packages("sf")
library("ggplot2")
library("sf")
nc <- st_read(system.file("shape/nc.shp", package="sf"))
ggplot() +
geom_sf(data = nc) +
scale_x_continuous(labels = function(x) paste0(x, '\u00B0', "W")) +
scale_y_continuous(labels = function(x) paste0(x, '\u00B0', "N"))
2)降级pango库。在 Fedora 31 中,pango 升级到 1.44,由于从 Freetype 切换到 HarfBuzz,这影响了默认 R-Studio 字体等位图字体。降级软件包修复了系统范围内特殊字符的呈现。这也应该可以解决 Fedora 32 中的问题(未经测试)。
sudo dnf downgrade --releasever 30 pango-1.43.0-4.fc30.x86_64
关于r - 如何修复在 Linux/Fedora 31 上的 R 中未正确显示的度数符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60656445/