可用于在 R 中可视化矩阵类型数据框的选项

数据挖掘 r 可视化
2021-10-12 14:09:37

我有一个如下所示的数据框:p1-p5 是不同的产品

AC: 价格区间 1-3: 大小区间 例如 A1: 卖贵的小店 D3: 卖便宜的大店 价值是每个类别的商店数量 A1-C2 每个产品

type    p1  p2  p3  p4  p5
  A1    158 48  18  6   62
  A2    343 151 58  49  55
  B1    400 181 200 29  863
  B2    398 093 448 215 795
  C1    809 217 154 15  422
  C2    877 549 340 46  576

可视化该信息的最佳方式是什么,以及哪些软件包可用于该信息。我找到了 gridplot 但不幸的是我还没有设法尝试它,因为我对 Rstudio 版本有问题。

例子非常受欢迎!

到目前为止,我已经从网上找到的功能中得到了这个 在此处输入图像描述

3个回答

我期待您的数据采用这种形式(用于melt转换数据):

   type product value
1   A1      p1   158
2   A2      p1   343
3   A3      p1   247
4   B1      p1   400
5   B2      p1   398
6   B3      p1   408

您可以轻松(使用lattice包)绘制barchart图表。

就个人而言,由于产品或渠道因素中的大量级别,我只会在此图表不再可行后才切换到热图。

library(lattice)
barchart(product~ value | type,
data =  dfp,
scales=list(x=list(rot=90, cex= 1 ),y=list(cex=1)),par.strip.text=list(cex=1), origin = 0,  
ylab="Product", xlab="Volume", 
main= "Matrix Visualization")

在此处输入图像描述

当然,您也可以通过更改公式来交换尺寸。使用参数布局根据级别数对齐条形图。

barchart(type~ value | product,
data =  dfp,
scales=list(x=list(rot=90, cex= 1 ),y=list(cex=1)),par.strip.text=list(cex=1), origin = 0,  layout= c(5,1),
ylab="Channel", xlab="Volume", 
main= "Matrix Visualization")

在此处输入图像描述

您可以简单地使用基本 {stats} 包中的heatmap 函数如果需要,这也可以显示一个树状图来显示集群。对于您的示例数据(带有heatmap(df)),这看起来像这样:

在此处输入图像描述

r-bloggers上,您可以找到一些关于heatmap.

查看这些数据的一种方法是绘制趋势线。

线形图

library(tidyverse) # for data transformations
library(magrittr) # for piping
library(forcats) # for factor manipulations
data %>% 
separate("type", c("price", "size"), sep=-2, remove = F) %>% # optional, separate 'type' into 'price' and 'size' bands
gather("product", "value", -c(price, size, type)) %>% # 'melt' products
mutate(type = fct_reorder(as.factor(type), value),
product = fct_reorder(as.factor(product), value)) %>% # optional, re-order 'type'/'product' factors by median 'value' numbers
ggplot() + geom_line(aes(x=type, y=value, color=product, group=product))

在此处输入图像描述

如果您想要热图,还有另一种使用方法。

热图

data %>% 
separate("type", c("price", "size"), sep=-2, remove = F) %>% 
gather("product", "value", -c(price, size, type)) %>% 
mutate(type = fct_reorder(as.factor(type), value),
product = fct_reorder(as.factor(product), value)) %>% 
ggplot() + geom_tile(aes(x=price, y=size, fill=value)) + facet_grid(product~.)

在此处输入图像描述

解释

请注意,在折线图中,“类型”因子按中值“值”数字重新排序。该图显示 A1 往往具有较低的值,而 C2 往往具有较高的值。
同样,在热图中,“产品”因子按“价值”中位数重新排序。查看该图,您可以看出 p4 的中值最高,而 p5 的中值最低。
您可以使用重新排序和分面来识别不同的趋势。