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

如何并排绘制两个QQ图?附可复现代码寻求解决方案

解决QQ图并排绘制在独立子图的问题

你当前代码把两个QQ图叠加在同一坐标轴,是因为只创建了单个子图对象,两次调用stats.probplot都复用了同一个坐标轴。要实现并排的独立子图,只需要创建多子图布局,给每个QQ图分配单独的坐标轴即可。

修改后的完整代码如下:

import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats

df = sns.load_dataset('tips')

x, y = df['total_bill'], df['tip']
# 创建1行2列的子图布局,获取两个独立坐标轴
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))

# 分别在两个子图绘制QQ图
stats.probplot(x, dist='norm', plot=ax1)
stats.probplot(y, dist='norm', plot=ax2)

# 设置子图标题和整体标题
ax1.set_title('QQ Plot: total_bill vs 正态分布')
ax2.set_title('QQ Plot: tip vs 正态分布')
fig.suptitle('两组数据的QQ图对比', y=1.02)  # y参数调整整体标题位置,避免和子图标题重叠

# 自动调整子图间距,避免元素挤压
plt.tight_layout()
plt.savefig('qq.png', dpi=300)
plt.show()

关键说明:

  • plt.subplots(nrows=1, ncols=2):创建1行2列的子图网格,返回的ax1和ax2是两个独立的坐标轴对象,分别对应左右两个子图
  • 调用stats.probplot时,将plot参数指定为对应的子图坐标轴,就能让每个QQ图绘制在独立区域
  • 通过ax.set_title()给每个子图单独设置标题,fig.suptitle()设置整体标题,提升可读性
  • plt.tight_layout()会自动调整子图的间距和边距,避免标题、坐标轴标签等元素重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:57:12