Per prima cosa, cariciamo alcuni pacchetti.
library(reshape2)
library(ggplot2)
library(scales)
Ecco i dati dell'esempio di radarchart a cui è stato collegato.
maxmin <- data.frame(
total = c(5, 1),
phys = c(15, 3),
psycho = c(3, 0),
social = c(5, 1),
env = c(5, 1)
)
dat <- data.frame(
total = runif(3, 1, 5),
phys = rnorm(3, 10, 2),
psycho = c(0.5, NA, 3),
social = runif(3, 1, 5),
env = c(5, 2.5, 4)
)
Abbiamo bisogno di una piccola manipolazione per renderli adatti per ggplot.
Normalizza, aggiungi una colonna id e converti in formato lungo.
normalised_dat <- as.data.frame(mapply(
function(x, mm)
{
(x - mm[2])/(mm[1] - mm[2])
},
dat,
maxmin
))
normalised_dat$id <- factor(seq_len(nrow(normalised_dat)))
long_dat <- melt(normalised_dat, id.vars = "id")
ggplot avvolge anche i valori in modo che i primi e gli ultimi fattori incontrano. Aggiungiamo un livello di fattore extra per evitare questo. Questo non è più vero.
livelli (long_dat $ variabile) < - c (livelli (long_dat $ variabile), "")
Ecco la trama. Non è esattamente la stessa cosa, ma dovrebbe iniziare.
ggplot(long_dat, aes(x = variable, y = value, colour = id, group = id)) +
geom_line() +
coord_polar(theta = "x", direction = -1) +
scale_y_continuous(labels = percent)
Nota che quando si utilizza coord_polar
, le linee sono curve. Se vuoi linee rette, dovrai provare una tecnica diversa.
dato che ggplot2 mi dà un controllo migliore sul titolo della trama, etichette in scala xy, e anche facendo sfaccettatura, ho bisogno di fare i tratteggi radar 30+ e voglio mostrarli in 1 pagina, e questo mi aiuta a capire meglio come funziona ggplot2 – lokheart
Puoi fare tutto ciò con la grafica di base. par (mfrow = c (5,6)) e ci sono i 30 (piccoli minuscoli) grafici su una pagina. Cosa c'è di sbagliato con "title (" Hello ")" per i titoli di trama? A volte il tempo trascorso a capire ggplot2 è meglio speso per andare avanti con esso con la grafica di base .... – Spacedman
Penso che sia una domanda legittima a voler fare questo in ggplot2 –