Sto provando a produrre una mappa di calore usando ggplot2. Ho trovato this example, che sto essenzialmente cercando di replicare con i miei dati, ma ho delle difficoltà. I miei dati è un file .csv semplice che assomiglia a questo:Come produrre una heatmap con ggplot2?
people,apple,orange,peach
mike,1,0,6
sue,0,0,1
bill,3,3,1
ted,1,1,0
vorrei produrre una mappa di calore semplice in cui il nome del frutto è l'asse delle ascisse e la persona è in asse y . Il grafico dovrebbe raffigurare quadrati in cui il colore di ogni quadrato è una rappresentazione del numero di frutti consumati. Il quadrato corrispondente a mike:peach
dovrebbe essere il più scuro.
Ecco il codice che sto usando per cercare di produrre la mappa termica:
data <- read.csv("/Users/bunsen/Desktop/fruit.txt", head=TRUE, sep=",")
fruit <- c(apple,orange,peach)
people <- data[,1]
(p <- ggplot(data, aes(fruit, people)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "white", high = "steelblue"))
Quando ho tracciare questi dati ottengo il numero di frutti sul ascisse e le persone in asse y. Inoltre, non ottengo gradienti di colore che rappresentano il numero di frutti. Come posso ottenere i nomi dei frutti sull'asse x con il numero di frutti mangiati da una persona visualizzata come mappa termica? L'uscita di corrente io sono sempre in R si presenta così:
@GeekOnAcid ho cercato di eseguire il codice di cui sopra con i dati della domanda iniziale, ma non è riuscito con: errore nel ridimensionamento (valore): Uso : rescale (x, newrange) dove x è un oggetto numerico e newrange è il nuovo min e max. Qual è il problema? – Ali
@AliSharifi Sì, hai ragione - ci sono state alcune modifiche in 'ggplot2' e altri pacchetti che hanno rimosso la funzione' recale' o spostato nell'altra funzione. Quello di cui hai bisogno è usare 'rescale' dal pacchetto' scale 'che ridimensiona il vettore numerico per avere il minimo e il massimo specificati. Ho aggiornato il codice per essere completamente riproducibile. –
@GeekOnAcid perfetto! – Ali