[英]R Heatmap using binned columns and rows
我有一個非常大的表(403k 行),其中包含一些分類的連續性能值(流量、壓力等),我想將其與銷售價值進行對比。 我想從中創建一個熱圖或輪廓 plot,使用 Q、W 和 E 上的分箱值,熱圖顯示銷售額,以便我可以匯總銷售值。 例如,讓我們將表( df
)設置為:
Q<-c(0.5,1,2,3,3.5,4,4,3,3,4,1,2)
W<-c(1,0.5,2,3,3,4,4,2,1,2,2,1)
E<-c(2,2,2,1,1,5,5,2,3,4,4,1)
Sales<-c(5,30,30,5,10,10,5,5,5,12,20,40)
df <- data.frame(Q = Q, W = W, E = E, Sales = Sales)
在我的真實表格中,Q 實際上是從 0 到 40 的值,其中 H 的范圍是 0 到 20,P 的范圍是 20 到 1000。我嘗試使用ggsci
ggplot(df) + geom_tile(aes(x = Q, y = W, fill = Sales), color = NA) + scale_fill_gsea()
但這會產生一些難以閱讀的小點(見圖)。 因此,我認為 tile 不會將 Q 和 W 值與 Sales(?)
我正在嘗試創建的東西更像是這個(丑陋的)東西,我在 Excel 中快速制作了這個例子:
現在我根本不是專家,所以我希望那里有人知道如何通過熱圖或某種二維密度 plot 以一種簡潔優雅的方式進行 plot 這個?
編輯:如果我使用ggplot(df, aes(Q,H)) + geom_hex(color = df$Sales)
我得到一個錯誤,並且只使用geom_hex()
給了我更接近的東西,但是 colors 不會根據銷售額。
編輯:在底部添加了“一半”答案,使用geom_bin2d()
,它與geom_hex()
一起使用。
我找到了一種方法來完成我的問題(請閱讀下文)。 非常感謝有關如何優雅地可視化它的其他建議!
ggplot(df, aes(x = Q, y = W, z = Sales)) + stat_bin2d(bins = 10) +
stat_summary_2d(bins = 10, fun = function(x) (x)) +
stat_summary_2d(bins = 10, aes(label = ..value..), fun = function(x) sum(x), geom="text") +
scale_fill_gradient(labels = comma, names = "Sales", low = "lightblue", high = "green", trans = "log10")
編輯:更新了我的答案。 現在的問題是正確縮放顏色(見上圖)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.