繁体   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