我正試圖學習如何在R中生成熱圖,所以很抱歉,如果這些問題看起來真的很基礎。比方說,我有這個表(有點做作,但我只是想在這裏練習):有關使用ggplot2製作熱圖的基本問題
NumHours FavePet FaveFood
1 3 Cat Burger
2 2 Cat Pizza
3 5 Fish Pizza
4 2 Dog Pizza
5 4 Fish Apple
6 3 Dog Burger
7 3 Cat Pizza
8 1 Cat Burger
9 6 Dog Apple
的dput結構如下:
structure(list(NumHours = c(3L, 2L, 5L,2L, 4L, 3L, 3L, 1L, 6L),
FavePet = structure(c(2L, 2L, 3L, 1L, 3L, 1L, 2L, 2L, 1L),
.Label = c("Dog", "Cat", "Fish"), class = "factor"),
FaveFood = structure(c(3L, 2L, 2L, 2L, 1L, 3L, 2L, 3L, 1L),
.Label = c("Apple", "Pizza", "Burger"), class = "factor")),
.Names = c("NumHours", "FavePet", "FaveFood"), row.names = c(NA, 9L), class = "data.frame")
我想產生熱FaveFood在x軸上的地圖,FavePet在y軸上,這一對的平均小時數是顏色的強度。例如,由於存在兩個「貓比薩」值(2,3),則將繪製對應於2.5的顏色,並且這將比具有值6的Dog Apple的值更輕。
到目前爲止,我有以下內容,它創建了正確的結構,但沒有包含平均值(不確定將它放在哪裏......它可能類似於fun.y = mean,但我沒有將它應用於y或x,所以我不知道如何調用它)。
ggplot(df, aes(x=FaveFood, y=FavePet, fill=as.factor(NumHours))) + geom_tile(aes(color="white"))
我也喜歡的顏色從黃到紅的範圍,基於價值,所以我說
+ scale_fill_gradient(low="yellow", high="red")
但是,這導致這個錯誤,這我不知道如何固定。
Error: Discrete value supplied to continuous scale
您的幫助真的很感激!我想了解如何做到這一點正確:)
哦,我明白了。這是有道理的。謝謝你的幫助。 – pomegranate