ggplot2和TikzDevice - 删除空格

时间:2016-03-15 23:04:01

标签: r ggplot2 tikz

我正在使用tikzDevice包来获取R中的Latex友好图表。我无法从下图的顶部和底部删除多余的空格: Example

我尝试使用par(mar),但它似乎不适用于ggplot2。此外,theme(plot.margins)似乎也没有反应。当我尝试用theme(aspect.ratio)改变图形的纵横比时引入空白区域。 有什么建议? 谢谢!

编辑:这是一个MWE:

library(tikzDevice)
library(reshape2)
x = seq(0,1,0.1)
y1 = x^2+2*x+7
y2= x^+2*x+2

df = data.frame(x,y1,y2)
df <- melt(df, id.vars=c("x"))
names(df) <- c("x","$latex~Name$","value")
plot <- ggplot(df,aes(x=x,y=value,color=`$latex~Name$`,group=`$latex~Name$`)) + geom_line() +
  theme(aspect.ratio = 0.4)
plot

tikzDevice(file="mweTex.tex")
plot
dev.off()

1 个答案:

答案 0 :(得分:2)

问题似乎是由一些影响图像边界框的tikz语句引起的。因为在tikzDevice中似乎没有任何选项来最小化空格,所以我不得不考虑别的东西。我设法通过在MWE末尾添加以下R代码来修复生成的tikz文件:

# remove all lines that invisibly mess up the bounding box
lines <- readLines(con="mweTex.tex")
lines <- lines[-which(grepl("\\path\\[clip\\]*", lines,perl=F))]
lines <- lines[-which(grepl("\\path\\[use as bounding box*", lines,perl=F))]
writeLines(lines,con="mweTex.tex")

我已经在你的MWE上测试了它:

result image 左图没有修复,右图是修复。