Я написал функцию, которая создает барплот.Я хотел бы сохранить этот график в формате 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
}
Проблема здесь в том, что окно, которое должно отображать сюжет, пусто!
Подводя итог, у меня есть два вопроса: 1)Как сохранить график в формате PDF и одновременно отобразить его в формате x11?И 2) Как сохранить график не в рабочем каталоге где-то еще?
РЕДАКТИРОВАТЬ
Решения выше работают отлично.Но я до сих пор не понимаю, почему
pdf("barplots.table.2")
barplot(something)
dev.copy(x11)
отображает пустое серое окно вместо копирования содержимого устройства pdf в оконное устройство!Я также попробовал
pdf("barplots.table.2")
barplot(something)
dev.copy(window)
, в котором я тоже потерпел неудачу ...