Как построить тепловую карту, используя 2 матрицы в r - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь создать тепловую карту, но не знаю, как это сделать.Вот кадры данных.

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 для построения тепловой карты, которая выглядит следующим образом?

enter image description here

матричный график представляет собойМатрица 3x3, в которой положительные числа выделены зеленым цветом (чем больше число, тем темнее зеленый), а отрицательное число - красным, это будет еще лучше.

Редактировать:

Спасибо Камилле за то, что он выдвинул на первый план всю широту вопроса, я сужу вопрос дальше, сославшись на ответ БД.

Ответ д.б. в точном направлении, которое я ищу.посредством чего тепловая карта отображается в матрице 3x3 на основе масштаба базового значения на заднем плане.(цель этой визуализации - показать, насколько позитивно или негативно настроение конкретной акции)

Опираясь на ответ БД (в котором значения окрашены в дискретные факторы), я опубликую альтернативное решение с непрерывными переменными намасштаб.Спасибо всем!

Ответы [ 2 ]

3 голосов
/ 18 марта 2019
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()

enter image description here

Если вы хотите удалить оси и легенды, ознакомьтесь с ответами здесь .

1 голос
/ 20 марта 2019

версия непрерывной переменной (диапазон от 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))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...