Matplotlib堆叠直方图无法正常显示的问题求助
解决Matplotlib堆叠直方图不生效的问题
你的代码中两次单独调用plt.hist()的方式,会让Matplotlib将两个直方图视为独立绘图对象,无法自动实现堆叠效果。要达成堆叠,需把两组数据(含对应权重)一次性传入hist函数,并开启堆叠参数。
修正后的代码
import numpy as np import matplotlib.pyplot as plt a = np.array([5.2, 6.7, 8.9, 10.5, 4.2, 2.1]) b = np.array([3.1, 2.2, 9.9, 15.5, 3.8, 1.4]) fig, ax = plt.subplots(1, 1, figsize=(7, 7)) values = np.arange(0, 6, 1) # 将两组数据和权重打包为列表,一次性传入并开启堆叠 plt.hist([values, values], weights=[a, b], bins=5, stacked=True, label=['a', 'b']) plt.legend() plt.show()
关键修改说明
- 把两组数据(这里是重复的
values)打包成列表[values, values]作为hist的第一个参数 - 对应权重也打包为列表
[a, b]传入weights参数 - 添加
stacked=True参数,明确告诉Matplotlib绘制堆叠直方图 - 标签改为列表形式,与两组数据一一对应
如果习惯用面向对象式绘图,也可以用ax.hist()替代plt.hist(),逻辑完全一致。
内容的提问来源于stack exchange,提问作者time12
相关产品推荐
相关产品推荐

