Я написал функцию, которая создает барплот. Я хотел бы сохранить этот сюжет как pdf, а также отобразить его на экране (x11) при применении этой функции. Код выглядит следующим образом.
create.barplots <- function(vec)
{
x11() # opens the window
### Here is a code that creates a barplot and works perfectly
### but irrelevant for my question
dev.copy(pdf("barplots.table.2.pdf")) # is supposed to copy the plot in pdf
# under the name "barplots.table.2.pdf"
dev.off() # is supposed to close the pdf device
}
Это создает следующую ошибку: "устройство" должно быть функцией
Когда я меняю код на:
create.barplots <- function(vec)
{
x11()
### Here is a code that creates a barplot and works perfectly
### but irrelevant for my question
dev.copy(pdf) # This is the only difference to the code above
dev.off()
}
R отображает график и создает файл с именем Rplots.pdf. Это проблема из-за нескольких причин.
Я также пытался открыть устройства по-другому. Сначала откройте pdf-устройство, чем скопируйте содержимое pdf-устройства в устройство x11, чем настройте устройство pdf как активное, а затем закройте pdf-устройство. Код выглядит так:
create.barplots <- function(vec)
{
pdf("barplots.table.2.pdf") # open the pdf device
### Here is a code that creates a barplot and works perfectly
### but irrelevant for my question
dev.copy(x11) # copy the content of the pdf device into the x11 device
dev.set(which = 2) # set the pdf device as actice
dev.off() # close the pdf device
}
Проблема заключается в том, что wondow, который должен отображать график, пуст!
Подводя итог, у меня есть два вопроса: 1) Как сохранить график в формате pdf и отобразить его в x11 одновременно? А также 2) Как сохранить сюжет не в рабочем каталоге где-то еще?
ИЗМЕНИТЬ
Решения выше работают отлично. Но я все еще не понимаю, почему
pdf("barplots.table.2")
barplot(something)
dev.copy(x11)
отображает пустое серое окно вместо копирования содержимого pdf-устройства в оконном устройстве! Я также пробовал
pdf("barplots.table.2")
barplot(something)
dev.copy(window)
В том, что я тоже не смог...