#r #plot #save
#r #график #Сохранить
Вопрос:
Я хочу сохранить несколько графиков в формате png с помощью цикла. К сожалению, цикл, похоже, не работает, так как сохранение и построение одного графика работает, но если я делаю это в цикле, ничего не сохраняется. Я также не получаю сообщение об ошибке. Просто ничего не происходит.
Вот код, который работает:
name = main_emo[i]
mypath=file.path("/Users/Jasmin/Documents/Psychologie/Master/Masterarbeit/Working directory", name)
png(mypath)
qplot(x_emo,y_emo, main = main_emo[i]) geom_errorbar(aes(x=x_emo, ymin=y_emo-sd, ymax=y_emo sd), width=0.25) ylab("Rating") xlab("Emotion")
theme(panel.grid.major = element_blank()) scale_y_continuous(breaks=seq(1,7,1)) expand_limits(y=7)
dev.off()
и это цикл, в котором он больше не работает:
main_emo <- c("Emotion Profile Funeral", "Emotion Profile Wedding", "Emotion Profile Destroyed Street","Emotion Profile Destroyed Street")
frame_name <- c("nice", "wedd", "des", "fun")
emo_mean <- c("rmean_EM_Trauer_", "rmean_EM_Freude_","rmean_EM_Angst_", "rmean_EM_Aerger_", "rmean_EM_Ekel_", "rmean_EM_Ueber_")
for (i in 1: length(frame_name)) {
y_emo <- c()
sd <- c()
x_emo <- c("Trauer", "Freude", "Angst", "Aerger", "Ekel", "Üeberraschung")
for (j in 1: length(emo_mean)) {
y_col <- unlist(pre_sub[colnames(pre_sub) == paste0(emo_mean[j], frame_name[i])], use.names=FALSE)
y_emo <- c(y_emo, mean(y_col, na.rm=TRUE))
sd <- c(sd, sd(y_col, na.rm=TRUE))
}
name = main_emo[i]
mypath=file.path("/Users/Jasmin/Documents/Psychologie/Master/Masterarbeit/Working directory", name)
png(mypath)
qplot(x_emo,y_emo, main = main_emo[i]) geom_errorbar(aes(x=x_emo, ymin=y_emo-sd, ymax=y_emo sd), width=0.25) ylab("Rating") xlab("Emotion")
theme(panel.grid.major = element_blank()) scale_y_continuous(breaks=seq(1,7,1)) expand_limits(y=7)
dev.off()
}
Спасибо за вашу помощь!
Комментарии:
1. Проверьте
mypath
, содержит ли правильный вектор символов, указывающий путь и имя. Пробел вworking directory
может вызывать проблемы.2. Вы используете
qplot()
fromggplot2
, так что вам может повезти большеggsave()
.
Ответ №1:
Используйте ggsave()
Не работает:
library("ggplot2")
for (i in unique(diamonds$color)) {
png(paste0("~/Desktop/colour_", i, ".png"))
ggplot(diamonds, aes(carat, price)) geom_point()
dev.off()
}
Работает:
for (i in unique(diamonds$color)) {
ggplot(diamonds, aes(carat, price)) geom_point()
ggsave(paste0("~/Desktop/color_", i, ".png"))
}
Комментарии:
1. Рад, что это сработало. Если это решило вашу проблему, пожалуйста, отметьте, чтобы принять ответ, чтобы другие могли видеть, что это решено.