3

运行 Ubuntu 16.04;R 3.6.2;ggplot2 3.3.0

在 --nix 下运行 R

如果我运行这个..

library(ggplot2)
data("midwest", package = "ggplot2")
ggplot(midwest, aes(x=area, y=poptotal))

我得到一个带有小框的坐标轴(Unicode?)

带有乱码轴的ggplot

如果我使用“情节”,我会得到相同的小盒子

但是如果我运行“情节”添加一个“家庭”属性,

plot (1:10, family="arial") 

我得到了这个(好轴),

情节给出了具有“家庭”属性的好轴

这表明至少有一些字体存在!

回到 ggplot ....

简单的解决方案是弄清楚(我试过)如何在 ggplot 中设置家庭。

我试过了,

ggplot(heightweight, aes(x= ageYear, y=heightIn, font="ariel")) + geom_point() 
ggplot(heightweight, aes(x= ageYear, y=heightIn, family="ariel")) + geom_point() 

没有帮助..小盒子。注意:如果我输入 family="Zombie" 会很开心

有人知道如何在ggplot中设置家庭吗?

更好的解决方案?

对我来说,最难的解决方案是找出缺少哪些字体,将它们安装在 --nix 下,然后确保 R(在 --nix 下)可以找到它们。

4

2 回答 2

2

玩了很多之后,我得到了一些工作!

我现在得到了一个漂亮的标题和轴(不再是 Unicode)。

这是片段

ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
   ggtitle("Fuel Efficiency of 32 Cars") +
   xlab("Weight (x1000 lb)") + ylab("Miles per Gallon") +
   theme_bw() +
   theme(text=element_text(family="Garamond", size=14))

显然,在 ggplot 中设置家庭的方法是使用“主题”,

theme(text=element_text(family="Garamond", size=14))

我知道这不是一个完美的解决方案,但它让我继续前进(没有药物:-))。

于 2020-05-27T01:28:05.197 回答
1

我认为重命名这个问题是值得的,因为它是 Nix 特有的问题,而且很难找到。核心问题是系统字体配置与 nix 提供的不匹配造成的。

https://discourse.nixos.org/t/fonts-in-nix-installed-packages-on-a-non-nixos-system/5871/6

我通过添加显式fontconfig依赖项并将以下内容添加到我的mkShell命令来解决了这个问题

shellHook = "export FONTCONFIG_FILE=${pkgs.fontconfig.out}/etc/fonts/fonts.conf";

之后,从 nix-shell 中打开 R 并生成绘图按预期工作。

于 2020-08-07T02:01:39.420 回答