You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单张图表中合并展示双分销渠道的两个热力图?

实现双渠道合并热力图

要在单张图表里把门店(S)和线上(O)两个渠道的热力图合并到同一门店下,我们可以通过拆分X轴位置、叠加两个热力图层的方式实现,同时支持不同colormap。以下是完整实现方案:

实现思路

  • 将每个门店拆分为门店渠道和线上渠道两个X轴位置,总X轴长度变为原门店数的2倍
  • 分别加载两个渠道的销量数据,通过imshow的extent参数控制每个渠道热力图的显示位置
  • 自定义X轴标签,让每个门店名称居中显示在两个渠道的上方
  • 添加渠道分割线,区分同一门店下的两个渠道
  • 支持双colormap,并生成对应颜色条

完整代码

import numpy as np
import matplotlib.pyplot as plt

# 生成模拟数据:7本书,6个门店,两个渠道
data_store = np.random.randint(2, 100, size=(7, 6))  # 门店渠道销量
data_online = np.random.randint(2, 100, size=(7, 6)) # 线上渠道销量

# 原始门店名称,每个门店对应两个渠道位置
stores = ["Store {}".format(i) for i in list("ABCDEF")]
books = ["Book {}".format(i) for i in range(1, 8)]

fig, (ax1, cax1, cax2) = plt.subplots(ncols=3, figsize=(12, 6), 
                                      gridspec_kw={"width_ratios": [20, 1, 1]})

# 绘制门店渠道热力图:每个门店占X轴的0-1,2-3,...10-11位置
im_store = ax1.imshow(data_store, cmap="Wistia", 
                      extent=[-0.5, 11.5, 6.5, -0.5], aspect="auto")
# 绘制线上渠道热力图:每个门店占X轴的0.5-1.5,2.5-3.5,...10.5-11.5位置
im_online = ax1.imshow(data_online, cmap="Blues", 
                       extent=[0.5, 12.5, 6.5, -0.5], aspect="auto")

# 设置X轴主刻度:每个门店居中在两个渠道位置的中间
ax1.set_xticks(np.arange(1, 12, 2))
ax1.set_xticklabels(stores, rotation=45)
# 设置Y轴刻度
ax1.set_yticks(np.arange(7))
ax1.set_yticklabels(books)

# 添加白色网格线
ax1.set_xticks(np.arange(-0.5, 12.5, 1), minor=True)
ax1.set_yticks(np.arange(-0.5, 7, 1), minor=True)
ax1.grid(which='minor', axis='both', linestyle='-', color='white', linewidth=2)

# 添加同一门店内的渠道分割线(蓝色)
for x in np.arange(1.5, 12, 2):
    ax1.axvline(x=x, color='blue', linewidth=2)

# 添加两个颜色条
plt.colorbar(im_store, cax=cax1, label='门店渠道销量')
plt.colorbar(im_online, cax=cax2, label='线上渠道销量')

plt.tight_layout()
plt.show()

效果说明

  • 每个门店的X轴区域被蓝色分割线分成左右两部分,左侧为门店渠道(黄色系colormap),右侧为线上渠道(蓝色系colormap)
  • 两个渠道的颜色条分别独立显示,清晰区分不同渠道的销量数值对应颜色
  • 保留了原代码中的白色网格、刻度样式,保证图表风格一致

内容的提问来源于stack exchange,提问作者carl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:20:23