Мне нужен гибкий способ создания диаграмм радаров / пауков в ggplot2. Из решений, которые я нашел на github и группе ggplot2, я зашел так далеко:
library(ggplot2)
# Define a new coordinate system
coord_radar <- function(...) {
structure(coord_polar(...), class = c("radar", "polar", "coord"))
}
is.linear.radar <- function(coord) TRUE
# rescale all variables to lie between 0 and 1
scaled <- as.data.frame(lapply(mtcars, ggplot2:::rescale01))
scaled$model <- rownames(mtcars) # add model names as a variable
as.data.frame(melt(scaled,id.vars="model")) -> mtcarsm
ggplot(mtcarsm, aes(x = variable, y = value)) +
geom_path(aes(group = model)) +
coord_radar() + facet_wrap(~ model,ncol=4) +
theme(strip.text.x = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.8)))
который работает, за исключением того, что линии не закрываются. Я думаю, что смогу сделать это:
mtcarsm <- rbind(mtcarsm,subset(mtcarsm,variable == names(scaled)[1]))
ggplot(mtcarsm, aes(x = variable, y = value)) +
geom_path(aes(group = model)) +
coord_radar() + facet_wrap(~ model,ncol=4) +
theme(strip.text.x = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.8)))
чтобы соединить линии, но это не работает. И этого не делает:
closes <- subset(mtcarsm,variable == names(scaled)[c(1,11)])
ggplot(mtcarsm, aes(x = variable, y = value)) +
geom_path(aes(group = model)) +
coord_radar() + facet_wrap(~ model,ncol=4) +
theme(strip.text.x = element_text(size = rel(0.8)),
axis.text.x = element_text(size = rel(0.8))) + geom_path(data=closes)
что не решает проблему, а также дает много
"geom_path: Каждая группа состоит только из одного наблюдения. Вам нужно настроить эстетику группы?"
Сообщения. Сом, как мне закрыть очереди?
/ Фредрик
ggplot(mtcarsm[mtcarsm$model == "Maserati Bora", ], aes(x = variable, y = value)) + geom_path(aes(group = model)) + coord_radar()
закрывает строки здесь. - person lukeA   schedule 06.03.2015mpg
иcarb
. Что здесь происходит? - person Fredrik Karlsson   schedule 07.03.2015rbind
ed. - person lukeA   schedule 07.03.2015