我使用基因组数据来绘制三核苷酸的频率。我想用ggplot2生成png绘图,并且我在 Linux Centos 计算机上工作。如图所示,x.axis 标签未完全对齐,因为字母大小不同。我想使用等宽字体,所以我尝试使用“family”参数来修改主题,但这没有效果。我已经使用“extrafont”包看到并测试了许多答案,但没有结果,因为它似乎不适用于 png 输出。有没有一种简单的方法可以在 ggplot2 中使用等宽字体(例如 Courier),使用或不使用附加包?
这是迄今为止我基于最小数据集的代码示例。
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")
Run Code Online (Sandbox Code Playgroud)
看来type = "cairo"
inggsave()
是造成问题的原因。
您的绘图代码是正确的,当我在 RStudio 绘图窗口中查看您的绘图时,我看到了您想要的等宽字体。然而,当您保存绘图时,等宽字体被另一种字体替换,大概是因为 cairo 有它自己的默认字体(您保存的绘图中的所有字体都是衬线字体,即使 ggplot 默认为无衬线字体并且您从未编辑过y 轴上的文本)。
我能够通过删除type = "cairo"
来用等宽字体保存你的情节ggsave()
ggsave("test.png", plot = a, width = 2, height = 2, device = "png", dpi = 300)
Run Code Online (Sandbox Code Playgroud)