3

我正在尝试使用 ggplot 构建一个图表,然后使用 Cairo 包的 CairoPNG 函数将其保存到 PNG 图像。

问题是生成的图像文件似乎在 x 轴上缺少字母 J 的块。当我使用月份名称作为 x 轴标签时,这有点问题。

这似乎仅在文本大小设置为整数(例如 12)时发生。如果我将其设置为 11.5 或 12.5,则字母显示正常。

所以,我可以通过改变字体大小来修复它,但感觉有点像黑客。有谁知道它为什么会这样?

在此处输入图像描述

代码如下:

library("ggplot2")
library("scales")
library("Cairo")

# Set chart values
line.width = 1
font.size = 12

# Generate some random data
start.date <- as.Date("2011-07-01")
x.month <-seq.Date(start.date, by = "month", length.out = 24)
end.date <- max(x.month)


x.value <- rnorm(24,mean=50,sd=2)

# Combine into dataframe
x.data <- data.frame(
  "Month" = x.month,
  "Value" = x.value
  )

# Build chart
p <- ggplot(data=x.data, aes(Month, Value)) + geom_line(size=line.width)
p <- p + theme_bw()
p <- p + ggtitle("Test Chart\n")
p <- p + scale_y_continuous(limits = c(40, 60))
p <- p + scale_x_date(limits=c(start.date+20,end.date-20), breaks = "1 month",labels = date_format("%b-%y"))
p <- p + theme(axis.text.x=element_text(angle=90, hjust=1, vjust=0.5, size=font.size),
                axis.text.y=element_text(size=font.size),
                axis.title.x=element_blank(),
                axis.title.y=element_blank())

# Export chart
CairoPNG("c:\\temp\\temp1.png", width=500, height = 250)
p
dev.off()

编辑 1 我尝试了 baptiste 建议的以下代码,但这些字母似乎很好:

CairoPNG("test.png"); grid::grid.text("The disappearing J"); dev.off()

在此处输入图像描述


编辑 2

由 baptiste 提供孤立的礼遇。好像真的不喜欢旋转大写的Js!

CairoPNG("c:\\temp\\test.png",width=60, height=300); grid::grid.text("Rejoicefully Juxtaposing Jelly with Jam\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXYZ", rot=90); dev.off()

在此处输入图像描述

4

0 回答 0