在ggplot
中沿着y轴放置长文本而在cairo_pdf
和width
调用height
时,它会使用width = 7, height = 7
个参数,这样宽图不能适合输出PDF。
是否可以让cairo_pdf
决定PDF的大小以供读者查看制作的PDF中的整个情节?
Here可以通过ggsave
找到解决方案,但不适合这种情况,因为ggsave
在PDF输出中存在非拉丁字符问题。
代码示例:
cairo_pdf
:表现良好的PDF。该图不适合PDF。
cairo_pdf("out_cairo.pdf")
df <- data.frame(x = c("Несмотря на то, что доктора лечили его, пускали кровь и давали пить лекарства, он всё-таки выздоровел.", "B"), y = c(15, 20))
ggplot(df, aes(x = x, y = y)) +
stat_summary(fun.y = "mean", geom = "bar") +
coord_flip()
dev.off()
pdf
:文字重叠。
pdf("out_pdf.pdf")
df <- data.frame(x = c("Несмотря на то, что доктора лечили его, пускали кровь и давали пить лекарства, он всё-таки выздоровел.", "B"), y = c(15, 20))
ggplot(df, aes(x = x, y = y)) +
stat_summary(fun.y = "mean", geom = "bar") +
coord_flip()
dev.off()
答案 0 :(得分:1)
这为病态的宽边和情节留出了空间。如果您认为这是程序化的,您可以编写一个接受数据帧的mycairo
函数,并使用strwidth来查找打印x值的最大长度。
df <- data.frame(x = c("Несмотря на то, что доктора лечили его, пускали кровь и давали пить лекарства, он всё-таки выздоровел.", "B"), y = c(15, 20))
ylablen <- strwidth(df$x[1])
cairo_pdf("out_cairo.pdf", width= ylablen+5)
ggplot(df, aes(x = x, y = y)) +
stat_summary(fun.y = "mean", geom = "bar") +
coord_flip()
dev.off()