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

如何将plt.hist()的输出赋值给变量并通过调用变量绘图?

关于Matplotlib plt.hist()赋值变量与绘图的疑问解答

先搞懂:plt.hist()赋值给变量和直接调用的区别

其实核心差异在于变量存的是统计数据,不是绘图指令:

  • 当你直接执行plt.hist(l, bins=5)再plt.show()时,Matplotlib会立刻在当前默认的画布上画出直方图,同时plt.hist()会返回三个结果:频数数组、区间边界数组,还有构成直方图的图形元素(Patch对象列表)。这时候绘图动作已经完成,返回值只是这次绘图的附属数据。
  • 当你把plt.hist()的结果赋值给histogram时,你只是把那三个返回值存进了变量里——这个变量里只有数据和已绘制的图形元素,但没有保存“重新绘制这个直方图”的逻辑。所以你单独输入histogram再plt.show(),本质上只是打印了那三个返回值,根本没有触发新的绘图操作,自然不会出图也不会报错。

能不能把plt.hist()的输出赋值给变量,调用变量就绘图?

直接存plt.hist()的返回值不行,但有两种简单方法可以实现类似效果:

方法1:保存画布/轴对象

你可以先显式创建画布和轴,用轴对象绘制直方图,然后把画布存起来,之后想绘图时直接调用画布的显示方法:

import matplotlib.pyplot as plt
l = [0,0,1,1,1,2,3,3,4,4,4,4]

# 创建画布和轴对象
fig, ax = plt.subplots()
# 用轴绘制直方图(也可以保存hist的返回值,但重点是存fig)
hist_data = ax.hist(l, bins=5)

# 第一次显示
plt.show()
# 之后想再显示,直接调用fig的show方法即可
fig.show()

方法2:用函数封装绘图逻辑

如果不想存画布对象,把绘图步骤封装成函数也是个好办法,想绘图时直接调用函数:

import matplotlib.pyplot as plt
l = [0,0,1,1,1,2,3,3,4,4,4,4]

def plot_my_histogram():
    plt.hist(l, bins=5)
    plt.show()

# 第一次绘图
plot_my_histogram()
# 之后再想画,直接调用函数就行
plot_my_histogram()

简单总结下:plt.hist()的返回值是这次绘图的统计数据和图形元素,不是可复用的绘图指令;要实现“调用变量就绘图”,要么保存画布对象,要么封装绘图函数~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:31:09