【问题标题】:How to plot heatmap using 2 matrix in r如何在 r 中使用 2 矩阵绘制热图
【发布时间】:2019-08-09 02:36:16
【问题描述】:

我正在尝试创建热图,但不知道如何创建。这是数据框。

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 强调问题的广泛性,我将通过参考 d.b 的回答进一步缩小问题范围。

d.b 的答案正是我正在寻找的方向。借此,热图根据背景中基础值的比例显示在 3x3 矩阵中。 (此可视化的目的是显示特定股票的情绪有多积极或消极)

基于 d.b 的答案(其中值以离散因子着色),我将发布一个在尺度上具有连续变量的替代解决方案。谢谢大家!

【问题讨论】:

  • 来自gplotsheatmap.2有帮助吗?
  • 有足够多的方法,而且没有看到你迄今为止尝试过的方法,我认为这个边界太宽泛了。 R Graph Gallery 中有一堆示例:r-graph-gallery.com/heatmap

标签: r matrix ggplot2


【解决方案1】:

d.b 答案的连续变量版本(范围从 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))

【讨论】:

    【解决方案2】:
    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()
    

    如果您想删除坐标轴和图例,请查看答案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 2016-12-08
      • 2017-07-01
      • 1970-01-01
      相关资源
      最近更新 更多