如何以散点图形式绘制直方图?Python实现同类图表方法
以散点图形式绘制直方图及Python实现
问题1:如何以散点图形式绘制直方图?
核心逻辑是先统计数据的区间频数,再将区间位置与对应频数作为散点坐标绘图:
- 用
numpy.histogram()计算数据的频数分布和区间边界 - 提取区间边界的前n个值(n等于频数的数量),和频数一一对应作为散点的x、y坐标
- 调用
matplotlib.pyplot.scatter()完成散点绘制
问题2:如何在Python中绘制类似示例图的图表?
以下是可直接运行的实现代码,效果与示例图一致:
import matplotlib.pylab as plt import numpy as np from scipy.stats import binom # 生成100个服从二项分布的随机样本数据 y = binom.rvs(n=10, p=0.5, size=100) # 计算直方图的区间频数和边界 counts, bins = np.histogram(y, bins=50) # 绘制散点图:区间左端点对应x轴,频数对应y轴 plt.scatter(bins[:len(counts)], counts) # 添加网格线提升可读性 plt.grid() # 显示图表 plt.show()
代码说明:
binom.rvs():生成符合二项分布的随机数据,作为绘图的数据源np.histogram():将数据划分为50个区间,返回每个区间的频数counts和所有区间的边界bins(bins长度比counts多1)plt.scatter():把每个区间左端点和对应频数绘制成散点,还原直方图的分布趋势
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

