【问题标题】:Is there a way to change font family in geom_net?有没有办法改变 geom_net 中的字体系列?
【发布时间】:2017-11-09 03:14:52
【问题描述】:

我无法弄清楚如何更改 geom_net 中节点标签的字体系列。这是一个玩具网络图:

library(geomnet)

net <- data.frame(from = sample(LETTERS, 20, replace=TRUE),
                  to = sample(LETTERS, 20, replace=TRUE),
                  weight = round(runif(20,1,5)))

ggplot(data = net, aes(from_id = from, to_id = to)) +
  geom_net(aes(linewidth = weight), layout.alg = "kamadakawai", 
           labelon = TRUE, ecolour = "grey60",
           directed = FALSE, fontsize = 6, ealpha = 0.5,
           repel = TRUE)

theme_net 中有一个“base_family”参数,但这似乎只改变了图例文本的字体系列(而不是节点标签文本):

+ theme_net(base_family="Times")

我也尝试在主题函数中设置它(这是我通常在 ggplot 中设置的方式),但这也只会更改轴/图例文本(而不是节点标签文本):

+ theme(text=element_text(family="Times"))

【问题讨论】:

  • Changing fonts in ggplot2的可能重复
  • @Kevin 我了解如何在一般情况下更改 ggplot 中的字体。正如我在问题中提到的,我可以使用两个不同的函数来更改图例/刻度中的字体(所以这不是一个初始化问题,就像你在我没有加载字体的地方链接的问题一样)。这个问题特别是关于无法更改 geom_net 节点标签中的字体,即使我能够在同一个 ggplot 图中的其他地方更改字体。
  • 你必须使用theme而不是使用基础geomnet::theme_net
  • @Kevin 正如我在问题中提到的,我尝试了 theme_net。那行代码改变了图例中的字体,但没有改变节点标签。

标签: r


【解决方案1】:

pkg 作者在内部使用了gpar() 或带有标签 grob (https://github.com/sctyner/geomnet/blob/master/R/geom-net.r) 的硬编码位,并且没有任何方法设置 family(技术上为 fontfamily )。这意味着从图形设备的默认值中选择“家庭”(是的,不一致的 b/c,这是您稍微指定它的方式)。

两者:

cairo_pdf("test.pdf", family="Roboto Condensed")
ggplot(data = net, aes(from_id = from, to_id = to)) +
  geom_net(aes(linewidth = weight), layout.alg = "kamadakawai", 
           labelon = TRUE, ecolour = "grey60", labelgeom="text",
           directed = FALSE, fontsize = 10, ealpha = 0.5,
           repel = TRUE)
dev.off()

(我已经加载了 hrbrthemes 的 Roboto Condensed b/c,但我将它包含在其中以显示它可以拾取额外安装的字体。)

和:

cairo_pdf("test.pdf", family="Times")
ggplot(data = net, aes(from_id = from, to_id = to)) +
  geom_net(aes(linewidth = weight), layout.alg = "kamadakawai", 
           labelon = TRUE, ecolour = "grey60", labelgeom="text",
           directed = FALSE, fontsize = 10, ealpha = 0.5,
           repel = TRUE)
dev.off()

两者最终都使用了正确的标签字体。我没有尝试其他面向字体的主题更改,但它对标签有效(尽管您可以看到字体更改影响了轴文本,但我也没有明确设置它,所以也尝试一下):

任何真正有用的修复都需要一个 PR 来解决我今晚想破解但暂时无法完成的包(尽管还有很多其他人更有能力比我做公关)。至少您应该提交一个引用此问题的问题。

【讨论】:

  • 非常感谢!我非常感谢答案和解决方法。这让我很生气。
猜你喜欢
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多