我正在尝试使用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
问题由巴蒂斯特提供。它似乎真的不喜欢旋转资本Js!
CairoPNG("c:\\temp\\test.png",width=60, height=300); grid::grid.text("Rejoicefully Juxtaposing Jelly with Jam\nabcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXYZ", rot=90); dev.off()