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

如何用Python绘制重叠方块越多颜色越深的matplotlib可视化图表?

实现思路

你需要的重叠方块颜色随重叠数量加深的效果,核心可以通过两种方案实现:一是使用正方形标记的散点图叠加半透明效果,重叠区域自然会因为多层半透明色块叠加加深颜色;二是通过2D直方图统计每个网格内的样本数量,将颜色映射为数量值,数量越大颜色越深。第一种方案代码更简单,和你提供的示例样式匹配度更高。

可运行代码示例

方案1:半透明正方形散点实现

import numpy as np
import matplotlib.pyplot as plt

# 模拟两类样本数据,可替换为你自己的数据集
np.random.seed(42)
# 第一类样本(示例中蓝色类)
sample_count1 = 2000
x1 = np.random.normal(loc=0, scale=1.5, size=sample_count1)
y1 = np.random.normal(loc=0, scale=1.5, size=sample_count1)
# 第二类样本(示例中橙色类)
sample_count2 = 2000
x2 = np.random.normal(loc=2, scale=1.5, size=sample_count2)
y2 = np.random.normal(loc=2, scale=1.5, size=sample_count2)

plt.figure(figsize=(8, 6))
# 绘制第一类样本,marker='s'表示正方形标记,alpha控制透明度,s控制方块大小
plt.scatter(x1, y1, marker='s', s=30, c='#1f77b4', alpha=0.2, label='类别1')
# 绘制第二类样本
plt.scatter(x2, y2, marker='s', s=30, c='#ff7f0e', alpha=0.2, label='类别2')

# 配置图表样式
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('重叠方块密度图')
plt.legend()
plt.grid(alpha=0.3)
plt.show()

参数调整说明

  • 调整alpha参数:值越小单块方块透明度越高,需要更多重叠才会明显加深颜色,可根据你的样本量调整
  • 调整s参数:控制单个方块的大小,匹配你需要的网格密度
  • 调整c参数:替换为你需要的方块颜色

方案2:2D直方图实现(适合超大样本量场景)

如果你的样本量超过10万,散点图渲染会变慢,可以用2D直方图方案:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Patch

# 复用上面的模拟数据
np.random.seed(42)
sample_count1 = 50000
x1 = np.random.normal(loc=0, scale=1.5, size=sample_count1)
y1 = np.random.normal(loc=0, scale=1.5, size=sample_count1)
sample_count2 = 50000
x2 = np.random.normal(loc=2, scale=1.5, size=sample_count2)
y2 = np.random.normal(loc=2, scale=1.5, size=sample_count2)

plt.figure(figsize=(8, 6))
# 统一网格边界
bins = np.linspace(-4, 7, 30)
# 统计两类样本的2D分布
hist1, x_edge, y_edge = np.histogram2d(x1, y1, bins=bins)
hist2, x_edge, y_edge = np.histogram2d(x2, y2, bins=bins)

# 绘制两类分布热图
plt.imshow(hist1.T, origin='lower', extent=[x_edge[0], x_edge[-1], y_edge[0], y_edge[-1]],
           cmap='Blues', alpha=0.7)
plt.imshow(hist2.T, origin='lower', extent=[x_edge[0], x_edge[-1], y_edge[0], y_edge[-1]],
           cmap='Oranges', alpha=0.7)

# 配置样式和图例
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.title('2D直方图密度图')
legend_items = [Patch(facecolor='#1f77b4', label='类别1'), Patch(facecolor='#ff7f0e', label='类别2')]
plt.legend(handles=legend_items)
plt.grid(alpha=0.3)
plt.show()

示例图表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:15:03