簡體   English   中英

R 使用合並列和行的熱圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM