如何在同一图表中绘制多个2D数据直方图?
在同一图表中绘制多个2D直方图的实现方法
当然可以实现,下面是几种基于Matplotlib的实用方案:
方法1:叠加hist2d并调整透明度
通过多次调用plt.hist2d(),配合透明度参数alpha让不同数据集的直方图叠加显示,同时用不同的颜色映射区分。
示例代码:
import matplotlib.pyplot as plt import numpy as np # 生成两组模拟2D数据 np.random.seed(42) data1 = np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 1]], 1000) data2 = np.random.multivariate_normal([2, 2], [[1, -0.3], [-0.3, 1]], 1000) # 创建画布 plt.figure(figsize=(8, 6)) # 绘制第一组数据的2D直方图 plt.hist2d(data1[:, 0], data1[:, 1], bins=30, alpha=0.6, cmap='Blues', label='数据集1') # 绘制第二组数据的2D直方图 plt.hist2d(data2[:, 0], data2[:, 1], bins=30, alpha=0.6, cmap='Reds', label='数据集2') # 添加图例、色标和标题 plt.legend() plt.colorbar(label='频数') plt.xlabel('X轴') plt.ylabel('Y轴') plt.title('叠加的2D直方图') plt.show()
这里的关键是alpha参数(取值0-1),它让不同直方图的颜色重叠区域可见,同时cmap选择对比强烈的颜色映射,避免视觉混淆。
方法2:用hexbin绘制六边形分箱直方图
如果觉得矩形分箱的叠加效果不够清晰,可以用plt.hexbin()生成六边形分箱的2D直方图,同样支持叠加和透明度设置:
plt.figure(figsize=(8, 6)) plt.hexbin(data1[:, 0], data1[:, 1], gridsize=30, alpha=0.6, cmap='Greens', label='数据集1') plt.hexbin(data2[:, 0], data2[:, 1], gridsize=30, alpha=0.6, cmap='Oranges', label='数据集2') plt.legend() plt.colorbar(label='频数') plt.xlabel('X轴') plt.ylabel('Y轴') plt.title('叠加的六边形2D直方图') plt.show()
方法3:转换为等高线图叠加
如果不想用颜色叠加,还可以先计算每组数据的2D直方图统计结果,再用contourf()绘制填充等高线图:
plt.figure(figsize=(8, 6)) # 计算第一组数据的直方图统计 counts1, xedges1, yedges1 = np.histogram2d(data1[:, 0], data1[:, 1], bins=30) # 计算网格中心点 xcenters1 = (xedges1[:-1] + xedges1[1:]) / 2 ycenters1 = (yedges1[:-1] + yedges1[1:]) / 2 # 绘制等高线 plt.contourf(xcenters1, ycenters1, counts1.T, alpha=0.5, cmap='Purples', label='数据集1') # 第二组数据同理 counts2, xedges2, yedges2 = np.histogram2d(data2[:, 0], data2[:, 1], bins=30) xcenters2 = (xedges2[:-1] + xedges2[1:]) / 2 ycenters2 = (yedges2[:-1] + yedges2[1:]) / 2 plt.contourf(xcenters2, ycenters2, counts2.T, alpha=0.5, cmap='YlOrBr', label='数据集2') plt.legend() plt.colorbar(label='频数') plt.xlabel('X轴') plt.ylabel('Y轴') plt.title('等高线式多2D直方图') plt.show()
这些方法都能在同一图表中清晰展示多组2D数据的分布特征,你可以根据数据特点和可视化需求选择合适的方案。
内容的提问来源于stack exchange,提问作者SomethingSomething
相关产品推荐
相关产品推荐

