как ggsave () grid.arranged сюжет как SVG - PullRequest
0 голосов
/ 03 марта 2020

У меня есть код, который создает два отдельных ggplots и объединяет их в одну фигуру, используя gridExtra::grid.arrange.

. Я могу сохранить эту объединенную фигуру как PNG, используя ggsave(), но если я попытаюсь сохранить его в виде файла SVG я получаю только вторую цифру. Как я могу получить обе фигуры в одном файле SVG?

Редактировать : Этот вопрос выходит за рамки вопроса, рассмотренного в Как сохранить график, созданный с помощью ggplot2, как SVG . ggsave() для SVG хорошо работает для отдельных изображений, но НЕ РАБОТАЕТ с SVG для изображений, составленных с grid.arrange.

Вот рисунок, который я пытаюсь создать. Код для этого примера приведен ниже.

enter image description here

library(ggplot2)
library(gridExtra)
data(EastIndiesTrade,package="GDAdata")
c1 <- ggplot(EastIndiesTrade, aes(x=Year, y=Exports)) + 
             ylim(0,2000) + 
             geom_line(colour="black", size=2) + 
             geom_line(aes(x=Year, y=Imports), colour="red", size=2) +  
             geom_ribbon(aes(ymin=Exports, ymax=Imports), fill="pink",alpha=0.5) + 
             ylab("Exports and Imports (millions of pounds)") +
             annotate("text", x = 1710, y = 0, label = "Exports", size=5) +
             annotate("text", x = 1770, y = 1620, label = "Imports", color="red", size=5) +
             annotate("text", x = 1732, y = 1950, label = "Balance of Trade to the East Indies", color="black", size=6) +             
             theme_bw()
c2 <- ggplot(EastIndiesTrade, aes(x=Year,
             y=Imports-Exports)) + geom_line(colour="blue", size=2) +
             ylab("Balance = Imports - Exports (millions of pounds)") +
             geom_ribbon(aes(ymin=Imports-Exports, ymax=0), fill="pink",alpha=0.5) + 
             annotate("text", x = 1711, y = 30, label = "Our Deficit", color="black", size=6) +             
             theme_bw()

grid.arrange(c1, c2, nrow=1)

Теперь я пытаюсь сохранить их с помощью ggsave():

ggsave("east-indies-ggplot2.png", width=10, height=4)  # OK
ggsave("east-indies-ggplot2.svg", width=10, height=4)  # not OK -- only get the right panel

1 Ответ

1 голос
/ 03 марта 2020

Вы, вероятно, можете попытаться использовать пакет лоскутной работы

https://patchwork.data-imaginist.com вместо grid.arrange

Тогда вам нужно просто использовать

c3=c1+c2
ggsave("~/Desktop/plotdm.svg")

Это сработало для меня

Лучший

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...