Функция R cairo_pdf не учитывает границы построения - PullRequest
0 голосов
/ 26 февраля 2019

При создании графика в R с использованием устройства cairo_pdf результирующий график не учитывает границы построения.Линии и заштрихованные области будут проливаться через нижнюю ось x и правую сторону оси y (стороны 1 и 4).Я хотел бы знать, возможно ли исправить это поведение при использовании 'cairo_pdf' в R?

В качестве примера, посмотрите это изображение: cairo_pdf test plot

Это изображение является скриншотомPDF-файл, созданный с использованием следующего минимального рабочего примера кода:

cairo_pdf(file="test.pdf", width=0.5, height=0.5)
par("mar"=c(0.25,0.25,0.25,0.25))
plot(NA, xlim=c(0,1), ylim=c(0,1), axes=FALSE)
polygon(x=c(-1,-1,2,2), y=c(-1,2,2,-1), density=5, col="green3", lwd=10)
abline(h=0.25, col="red", lwd=5)
abline(h=0.75, col="hotpink", lwd=5, lend=1)
abline(v=0.25, col="blue", lwd=5)
abline(v=0.75, col="cyan", lwd=5, lend=1)
box()
dev.off()

Здесь я рисую заштрихованную область зеленым цветом, используя 'многоугольник', с границами, которые лежат вне графика.Я также рисую два набора горизонтальных / вертикальных линий, используя «аблайн».Первый в каждой паре использует стандартные закругленные заглавные буквы, в то время как второй в каждой паре использует заглавные буквы.

Как вы можете видеть, все линии затенения и абзацы с закругленными концами по умолчанию простираются за пределы области черчения вдоль нижней и правой боковых осей.Только при использовании 'lend = 1' я могу содержать абзацы для области построения.Однако я не знаю такого исправления для штриховых линий.

Я бы наивно ожидал, что область построения R будет соблюдена, и для нее будет невозможно построить график за пределами этой области, если это явно не указано пользователем.

Я проверил это на других устройствах cairo (SVG и PS), а также воспроизвел то же поведение, указав, что это проблема с графическим API-интерфейсом cairo или его реализацией в R.

Такое поведение не возникает при использовании стандартного графического устройства R 'pdf'.Я бы в общем случае переключился на «pdf», однако «cairo_pdf» имеет несколько преимуществ по сравнению с «pdf», в частности, уменьшение размера выходного файла и поддержка большего массива символов UTF-8, поэтому в идеале я бы предпочел использовать cairo_pdf.

Заранее благодарим вас за понимание этого вопроса.

...