簡體   English   中英

如何在R中使用2矩陣繪制熱圖

[英]How to plot heatmap using 2 matrix in r

我正在嘗試創建一個熱圖,但是對於如何使用它卻感到困惑。 這是數據幀。

Ticker <- c("S&P 500","Dow Jones Index","AAPL","MSFT","FB","NFLX","GOOG","JPM","TSLA")
Values <- c(2, 1, 1, 1, 1, 1, 1, -1, -1)

ticker_matrix <- matrix(Ticker , nrow = 3, ncol = 3)
values_matrix <- matrix(Values, nrow = 3, ncol = 3)

我應該如何使用ggplot2繪制看起來像這樣的熱圖?

在此處輸入圖片說明

矩陣圖是一個3x3矩陣,其中正數用綠色表示(數字越大,綠色越深),負數用紅色表示,效果會更好。

編輯:

感謝Camille強調問題的廣泛性,我將參考db的答案進一步縮小問題的范圍。

數據庫的答案是我正在尋找的確切方向。 從而根據背景中潛在價值的比例將熱圖顯示在3x3矩陣中。 (此可視化的目的是顯示特定股票的情緒是正面還是負面)

基於db的答案(由此值以離散因子上色),我將發布一個具有連續變量的替代解決方案。 謝謝大家!

d = data.frame(Ticker = as.vector(ticker_matrix),
               Values = as.vector(values_matrix),
               X = as.vector(row(ticker_matrix)),
               Y = as.vector(col(ticker_matrix)))

ggplot(data = d,
       mapping = aes(x = factor(X),
                     y = factor(Y),
                     fill = factor(Values),
                     label = Ticker)) +
    geom_tile(color = "white") +
    geom_text() +
    coord_equal()

在此處輸入圖片說明

如果要刪除軸和圖例,請在此處查看答案。

db答案的連續變量版本(范圍為c(-1,2)):

d = data.frame(Ticker = as.vector(ticker_matrix),
           Values = as.numeric(values_matrix),
           X = as.vector(row(ticker_matrix)),
           Y = as.vector(col(ticker_matrix)))

ggplot(data = d,
   mapping = aes(x = factor(X),
                 y = factor(Y),
                 fill = Values,
                 label = Ticker)) +
    geom_tile() +
    geom_text() +
    coord_equal() + 
    scale_fill_gradientn(colors = c("dark red", "red3", "white", "green3", "dark green"),
      limits=c(-1, 2))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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