我正在使用 R 編程語言。
我有以下資料集:
library(treemap)
library(dplyr)
var1 <- c("A", "B", "C", "D", "E")
var1<- sample(var1, 1000, replace=TRUE, prob=c(0.2, 0.2, 0.2, 0.2, 0.2))
var1<- as.factor(var1)
var2 <- c("abc", "bcd", "egf", "hiu", "lkj", "oiu", "piu", "xsr", "zze", "tre")
var2<- sample(var2, 1000, replace=TRUE, prob=c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1))
var2<- as.factor(var2)
my_data = data.frame(var1, var2)
my_data = data.frame(my_data %>% group_by(var1, var2) %>% summarise(counts = n()))
我現在正在使用此代碼為整個資料集制作樹形圖:
resize.win <- function(Width=6, Height=6)
{
# works for windows
dev.off(); # dev.new(width=6, height=6)
windows(record=TRUE, width=Width, height=Height)
}
resize.win(10,10)
treemap(my_data, index = c("var1", "var2"), vSize = "counts", type = "index", palette = "Set1", title = "my map")

現在,我想使用 LOOP 為 var1 的每個獨特因子制作一個單獨的樹形圖,然后保存它們中的每一個。我試圖用一個回圈來做到這一點:
levs = my_data$var1
factors = lapply(levs[sapply(levs, is.factor)], levels)
factors = factors[[1]]
my_list = list()
for (i in 1:length(factors))
{
index_i = factors[[i]]
title_i = paste0("Tree Map", index_i)
data_i = my_data[which(my_data$var1 == index_i),]
treemap_i = treemap(data_i, index = c("var1", "var2"), vSize = "counts", type = "index",
palette = "Set1", title = title_i)
my_list[[i]] = treemap_i
save_title_i = paste0("treemap_",i, ".png")
png(save_title_i )
}
但是,我不認為我這樣做是正確的,因為輸出被破壞了:

有人可以告訴我如何解決這個問題嗎?
謝謝!
uj5u.com熱心網友回復:
如果要在本地保存繪圖,則需要記住兩件事:
- 在繪圖前使用
png()(bmp、jpeg、pdf 等)打開檔案 - 在繪圖后使用
dev.off()關閉檔案
*此外,您可以通過以下方式更改要保存的繪圖的尺寸:
png(save_title_i , width = 800, height = 800)
for (i in 1:length(factors))
{
index_i = factors[[i]]
title_i = paste0("Tree Map", index_i)
data_i = my_data[which(my_data$var1 == index_i),]
save_title_i = paste0("treemap_",i, ".png")
png(save_title_i ) # open the file
treemap_i = treemap(data_i, index = c("var1", "var2"), vSize = "counts", type = "index", palette = "Set1", title = title_i)
my_list[[i]] = treemap_i
dev.off() # close the file
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519813.html
標籤:r循环节省
