尝试从DataFrame或Matrix创建热图

时间:2018-04-24 21:35:04

标签: python r python-3.x

我有这样的样本数据。

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

我觉得我需要几个维度来使这项工作正确。我每个日期有多个产品,每个产品有多个reporting_amount值。从SQL Server开始,数据集基本上是按产品排名前十的收入。

最终,我希望看到类似的东西!

enter image description here

但是,不是代码和百分比上/下,列出产品和reporting_amount,无论是一个日期还是所有日期。一个日期很好,如果这更容易。 显然这是R代码,但如果这是一种更好的工具,我可以轻松切换到Python。

1 个答案:

答案 0 :(得分:1)

您的最终示例剂量看起来不像热图,而是树图。也许你可以试试这个:

var vm = {};
vm.xQty = 2;
vm.yQty = 3;
vm.promotionGroupForX = "abc";
vm.productCategoryForY = "xyz";

console.log(`Using this promotion, Buy any ${vm.xQty} products of ${vm.promotionGroupForX} then get any "${vm.yQty}" product of ${vm.productCategoryForY} free.`);

用于定义区域或颜色(填充)的 reporting_amount 应该是数字而不是字符,因此我删除了引号。标签(这里我用产品)应该是字符。

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)

然后我得到了这张照片:

enter image description here

我不确定这是否是您正在寻找的,只是区域和颜色可以改变一些值看起来与您的最终示例非常相似。也许当您在数据集中有更多维度时,树图可以定义更多功能。