ggplot2 и TikzDevice — удаление пробелов

Я использую пакет tikzDevice для получения удобных для Latex графиков в R. У меня возникли проблемы с удалением лишних пробелов сверху и снизу графика ниже: Пример

Я пытался использовать 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()

person user191919    schedule 15.03.2016    source источник
comment
Как насчет кода? Не уверен, что вы на самом деле здесь делаете, сюжет кажется мне сломанным.   -  person Mike Wise    schedule 16.03.2016
comment
см. также stackoverflow.com/a/36029298/471093   -  person baptiste    schedule 16.12.2016


Ответы (1)


Проблема, по-видимому, вызвана некоторыми операторами tikz, которые влияют на ограничивающую рамку изображения. Поскольку в tikzDevice, похоже, нет возможности минимизировать пробелы, мне пришлось придумать что-то еще. Мне удалось исправить сгенерированный файл tikz, добавив следующий код R в конец вашего MWE:

# 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 Левое изображение без исправления, правое изображение с исправлением.

person rinde    schedule 16.12.2016