我正在尝试使用 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()