地图轴标签中的度数符号不正确
degree symbol incorrect in map axis labels
如果我使用 geom_sf
创建地图,轴标签的度数符号有误。我得到的度数符号在文本中垂直居中,而不是像上标那样凸起。
例如,
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。
不确定还有哪些其他信息可能相关,但我可以根据要求更新答案。
作为解决方法,我手动创建轴标签。仍在寻找更好的解决方案和对不良行为的解释。
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))
终于找到答案了:
从 ?X11 说:
Problems with incorrect rendering of symbols (e.g., of quote(pi) and
expression(10^degree)) have been seen on Linux systems which have the
Wine symbol font installed – fontconfig then prefers this and
misinterprets its encoding. Adding the following lines to
‘~/.fonts.conf’ or ‘/etc/fonts/local.conf’ may circumvent this problem
by preferring the URW Type 1 symbol font.
<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
解决了我的问题。
如果我使用 geom_sf
创建地图,轴标签的度数符号有误。我得到的度数符号在文本中垂直居中,而不是像上标那样凸起。
例如,
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。
不确定还有哪些其他信息可能相关,但我可以根据要求更新答案。
作为解决方法,我手动创建轴标签。仍在寻找更好的解决方案和对不良行为的解释。
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))
终于找到答案了:
从 ?X11 说:
Problems with incorrect rendering of symbols (e.g., of quote(pi) and expression(10^degree)) have been seen on Linux systems which have the Wine symbol font installed – fontconfig then prefers this and misinterprets its encoding. Adding the following lines to ‘~/.fonts.conf’ or ‘/etc/fonts/local.conf’ may circumvent this problem by preferring the URW Type 1 symbol font.
<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
解决了我的问题。