Я создаю серию сюжетов в R (я использую ggplot2, но это не важно), и я хочу быть в состоянии спасти свою продукцию, таким образом, я могу тогда отредактировать его для использования furthur, Например, я мог бы хотеть перенести легенды или приспособить цвета и т.д. Я видел, что у ggplot2 есть спасти команда, но это, кажется, производит PDF или битовые массивы, ни один из которых особенно редактируемые
Как другие люди делают это? Какие-либо хорошие идеи?
Вот некоторый пример кода, чтобы написать типовой сюжет;
library(ggplot2)
dataframe<-data.frame(fac=factor(c(1:4)),data1=rnorm(400,100,sd=15))
dataframe$data2<-dataframe$data1*c(0.25,0.5,0.75,1)
dataframe
testplot<-qplot(x=fac, y=data2,data=dataframe, colour=fac, geom=c("boxplot", "jitter"))
testplot
Спасибо
Пол.
Спасибо за ответы, я играл с этим, и после некоторой помощи у моего друга Google я нашел пакет CAIRO , который позволяет создавать файлы SVG, Затем я могу редактировать их в Inkscape .
library(Cairo)
Cairo(600,600,file="testplot.svg",type="svg",bg="transparent",pointsize=8, units="px",dpi=400)
testplot
dev.off()
Cairo(1200,1200,file="testplot12200.png",type="png",bg="transparent",pointsize=12, units="px",dpi=200)
testplot
dev.off()
Теперь мне просто нужно играть с различными настройками, чтобы получить мой участок так же хорошо, как его можно перед записью файла.
С GGPLOT и решеткой, вы можете использовать Сохранить
, чтобы сохранить объект сюжета на диск, а затем нагрузка
позже и измените его. Например:
save(testplot, file = "test-plot.rdata")
# Time passes and you start a new R session
load("test-plot.rdata")
testplot + opts(legend.position = "none")
testplot + geom_point()
Взгляните Справка (устройства)
для других форматов, которые доступны SVG
, pictex
и xfig
, все из которых редактируются для большего или меньшего количества.
Обратите внимание, что PDF могут быть отредактированы, например, с помощью инструмента OmniGraffle
, доступных для OSX Apple.
Кроме того, вы можете записать команды R на графическую подсистему для повторения ее позже - посмотрите Dev.copy
:
Most devices (including all screen devices) have a display list
which records all of the graphics operations that occur in the
device. 'dev.copy' copies graphics contents by copying the display
list from one device to another device. Also, automatic redrawing
of graphics contents following the resizing of a device depends on
the contents of the display list.
Я обычно принимаю третью стратегию, которая должна копировать мою сессию R в файл RSScript, который я могу работать несколько раз и настраивать команды построения, пока не сделает то, что я хочу:
#!/usr/bin/Rscript
x = 1:10
pdf("myplot.pdf", height=0, width=0, paper="a4")
plot(x)
dev.off();