Я делаю серию treemaps и хочу, чтобы «А» в каждом сюжете всегда имел один и тот же цвет, а «В» на каждом сюжете всегда имеет один и тот же цвет и т. Д. .treemap [R]: как исправить назначение цвета
Размер V может быть равен 0 на некоторых участках - в этом случае я заполнил строки 0, но это не решило проблему. Может кто-нибудь помочь, пожалуйста ... Спасибо!
library(dplyr)
library(treemap)
#set directory
setwd('')
nRow = 200
dt1 = data.frame(month = sample(month.abb, nRow, replace=T),
town = sample(LETTERS, nRow, replace=T),
count = sample(1:100, nRow, replace=T))
# make some towns bigger so that it's easier to see
dt1[dt1$town=='A', 'count'] = dt1[dt1$town=='A', 'count'] + 500
dt1[dt1$town=='B', 'count'] = dt1[dt1$town=='B', 'count'] + 400
dt1[dt1$town=='C', 'count'] = dt1[dt1$town=='C', 'count'] + 300
dt1[dt1$town=='D', 'count'] = dt1[dt1$town=='D', 'count'] + 200
dt1[dt1$town=='E', 'count'] = dt1[dt1$town=='E', 'count'] + 100
empty = data.frame(name = LETTERS,
count = rep(0, length(LETTERS)))
for (i in 1:length(month.abb)){
byTownEachMonth = dt1 %>%
filter(month == month.abb[i]) %>%
group_by(town) %>%
summarise(count = sum(count))
# pad rows/towns of 0 count
byTownEachMonth = rbind(byTownEachMonth,
empty[ ! empty$town %in% byTownEachMonth$town, ])
byTownEachMonth = byTownEachMonth[order(byTownEachMonth$town), ]
byTownEachMonth$label = paste0(byTownEachMonth$town, ' ',
byTownEachMonth$count)
png(width=800, height=600, file=paste0('tm_', month.abb[i], '.png'))
treemap(byTownEachMonth,
index = 'label',
vSize ='count',
vColor = 'town',
type = 'categorical',
inflate.labels = F)
dev.off()
}
большое спасибо @WhiteViking. - О грязной легенде, я решил не показывать ее, так как индекс уже показывает необходимую информацию. –