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

如何在2*2子图网格中循环绘制stats.probplot正态概率图

问题修复说明

错误原因

  • 调用stats.probplot时,plot参数传入plt会默认绘制到全局当前活跃的子图上,多次调用会重复覆盖同一块绘图区域,最终仅显示最后生成的图
  • 将stats.probplot的返回值(元组类型,存储正态拟合的计算结果,并非子图对象)重新赋值给了原本的子图变量ax,导致原有子图对象被覆盖,无法对子图做后续样式调整

修正后代码

import random
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

fig, axs = plt.subplots(2,2, figsize=(15, 6), facecolor='w', edgecolor='k')
fig.subplots_adjust(hspace = .5, wspace=.2) # 调整wspace避免坐标轴标签重叠

data = {'col1': [random.randrange(1, 50, 1) for i in range(1000)], 
        'col2': [random.randrange(1, 50, 1) for i in range(1000)],
        'col3':[random.randrange(1, 50, 1) for i in range(1000)],
        'col4':[random.randrange(1, 50, 1) for i in range(1000)]}  

df = pd.DataFrame(data)  

for ax, col_name in zip(axs.ravel(), df.columns):
    # 直接将当前循环对应的子图对象传给plot参数即可
    stats.probplot(df[col_name], plot=ax)
    ax.set_title(f"概率图:{col_name}")

plt.show()

补充说明

  • stats.probplot传入plot=ax时,会自动将概率图绘制到指定子图上,无需额外赋值操作
  • 可以直接通过循环中的ax变量自定义子图的标题、坐标轴标签、刻度等样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:36:04