Попытка создать тепловую карту из DataFrame или Matrix - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть примеры данных, как это.

product <- c('Credit')
startdate <- c('12/30/2018','12/30/2018','12/30/2018','12/30/2018','12/30/2018')
reporting_amount <- c('29918501.83','50000000','40000000','13766666.67','75000000')
mydata <- data.frame(product, startdate, reporting_amount)

Все это происходит из SQL Server;выгружается как файл CSV.Я хочу создать тепловую карту из этого набора данных.Нужно ли преобразовывать это в матрицу или я могу передать фрейм данных в тепловую карту?

Я попробовал это:

heat_matrix <- data.matrix(heat)
heat_heatmap <- heatmap(heat_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10))

Затем я закончил с этим:

enter image description here

Я чувствую, что мне нужно несколько измерений, чтобы сделать эту работу правильной.У меня есть несколько продуктов на дату и несколько значений reports_amount для каждого продукта.Набор данных - это, в основном, 10 лучших доходов, по продуктам по дате, от SQL Server.

В конечном счете, я хотел бы увидеть что-то подобное!

enter image description here

Но вместо тикеров и процентов вверх / вниз перечислите продукты и report_amount на одну дату или на все даты.Одно свидание хорошо, если так проще.Очевидно, это R-код, но я могу легко переключиться на Python, если это лучший инструмент для такой работы.

1 Ответ

0 голосов
/ 25 апреля 2018

Ваш последний пример дозы выглядит не как тепловая карта, а как древовидная карта. Может быть, вы могли бы попробовать это:

library(treemapify)
product <- c('Credit')
startdate <- c('12/30/2018','12/30/2018','12/30/2018','12/31/2018','12/31/2018')
reporting_amount <- c(29918501.83,50000000,40000000,13766666.67,75000000)
mydata <- data.frame(product, startdate, reporting_amount)
mydata$product <- as.character(product)

reports_amount , используемый для определения областей или цвета (заливка), должен быть числовым, а не символьным, поэтому я удалил кавычки. И метка (здесь я использовал Product ) должна быть символьной.

ggplot(mydata,aes(area = reporting_amount,fill = reporting_amount,subgroup = startdate,label = product)) +
  geom_treemap() +
  geom_treemap_subgroup_border(size = 10)+
  geom_treemap_text(color = 'white',grow = T,place = 'center') +
  geom_treemap_subgroup_text()

Тогда я получил эту картину:

enter image description here

Я не уверен, что это то, что вы ищете, только то, что область и цвет могут измениться на какое-то значение, очень похоже на ваш последний пример. Возможно, когда у вас больше измерений в наборе данных, древовидная карта может определить больше объектов.

...