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

如何用Matplotlib绘制指数分布与泊松分布的并排图?

如何用Matplotlib绘制指数分布与泊松分布的并排图

没问题!要实现两个分布的并排可视化,我们可以借助Matplotlib的子图功能,给连续的指数分布用直方图展示,离散的泊松分布用条形图展示,这样更贴合各自的分布特性。下面是完整的可运行代码,我会帮你修正原代码里的小问题,并详细说明每一步:

完整实现代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 1. 生成数据(修正原代码的小细节)
mean = 2
step = 0.5
df1 = pd.DataFrame()
df1['A'] = pd.Series(abs(np.random.exponential(step, 400)))  # 指数分布数据
df2 = pd.DataFrame()
df2['B'] = pd.Series(abs(np.random.poisson(mean, 400)))      # 泊松分布数据

# 2. 准备汇总统计数据(补全原代码未完成的部分)
# 指数分布的频次统计(因为是连续值,也可以直接用直方图,不需要提前汇总)
df1_summ = df1.groupby(['A']).size().reset_index(name='counts')
df1_summ = df1_summ.sort_values(['counts'], ascending=True)

# 泊松分布的频次统计(离散值,汇总后更适合条形图)
df2_summ = df2.groupby(['B']).size().reset_index(name='counts')
df2_summ = df2_summ.sort_values(['B'], ascending=True)

# 3. 创建并排子图
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(12, 5))  # 1行2列的布局

# 4. 绘制指数分布的直方图(连续分布用直方图更直观)
ax1.hist(df1['A'], bins=20, edgecolor='black', alpha=0.7)
ax1.set_title('指数分布数据直方图')
ax1.set_xlabel('数值')
ax1.set_ylabel('频次')

# 5. 绘制泊松分布的条形图(离散分布用条形图更清晰)
ax2.bar(df2_summ['B'], df2_summ['counts'], width=0.6, color='#4CAF50')
ax2.set_title('泊松分布数据条形图')
ax2.set_xlabel('数值')
ax2.set_ylabel('频次')
# 给泊松的x轴设置整数刻度(因为泊松是离散整数分布)
ax2.set_xticks(df2_summ['B'])

# 6. 调整子图间距,避免标签重叠
plt.tight_layout()
plt.show()

关键细节说明

  • 子图布局:用plt.subplots(nrows=1, ncols=2)创建1行2列的并排子图,figsize可以根据需求调整画布大小。
  • 可视化类型选择:
    • 指数分布是连续分布,用直方图(hist)直接展示数据的分布密度,比提前汇总后绘图更准确。
    • 泊松分布是离散整数分布,用条形图(bar)展示每个整数的频次,能更清晰地呈现离散值的分布规律。
  • 细节优化:给泊松图的x轴设置整数刻度,符合其离散特性;用tight_layout()自动调整子图间距,避免标题、标签互相重叠。

内容的提问来源于stack exchange,提问作者bryan.blackbee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:32