对ggplot2中的轴标签使用等宽字体,并输出png

时间:2018-08-13 08:22:08

标签: r ggplot2

我使用基因组数据来绘制三核苷酸的频率。 我想用 ggplot2 生成一个 png 图,我正在Linux Centos计算机上工作。 从图中可以看出,x.axis标签没有完全对齐,因为字母的大小不同。我想使用等距字体,所以我尝试使用“ family”参数来修改主题,但这没有效果。 我已经使用“ extrafont”软件包查看并测试了许多答案,但没有结果,因为它似乎不适用于png输出。 是否有简单的方法在ggplot2中使用等宽字体(例如Courier),而不用或不使用其他包?

enter image description here

这是到目前为止基于最小数据集的代码示例。

testData <- data.frame(freq = rnorm(10), context = c("ACA","ACC","ACG","ACT","CCA","CCC","CCG","CCT","GCA","GCC"))
a <- ggplot(testData, aes(x=context, y=freq)) + 
    geom_bar(stat="identity", width = 0.4, fill = "royalblue") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5, size = 10, family = "mono"), axis.title.x=element_blank())
ggsave("test.png", plot=a, width=2, height=2, device = "png", dpi = 300, type = "cairo")

1 个答案:

答案 0 :(得分:0)

type = "cairo"中的ggsave()似乎是引起问题的原因。

您的绘图代码是正确的,当我在RStudio绘图窗口中查看您的绘图时,看到了预期的等宽字体。但是,当您保存图时,等宽字体会替换为另一种字体,大概是因为cairo拥有自己的字体默认值(即使ggplot默认值为sans serif,并且您从未编辑过y轴上的文字)。

通过从type = "cairo"删除ggsave(),我可以用等宽字体保存您的绘图

ggsave("test.png", plot = a, width = 2, height = 2, device = "png", dpi = 300)

enter image description here