如何使用Python基于指定数据绘制dot plot(非散点图)
Python 实现指定效果 dot plot 解决方案
你需要的是数值相同的点沿垂直方向堆叠的 dot plot,和常规散点图逻辑不同,核心是对重复数值做堆叠计数,避免点重叠。下面是可直接运行的实现方案:
实现代码(基于 Matplotlib,通用兼容)
import matplotlib.pyplot as plt # 你的原始数据 data = [74.001, 74.003, 74.015, 74.000, 74.005, 74.004] # 统计每个数值的出现次数,生成点的坐标 value_counts = {} x_coords = [] y_coords = [] for val in data: # 相同数值的y坐标依次累加1 if val not in value_counts: value_counts[val] = 0 value_counts[val] += 1 x_coords.append(val) y_coords.append(value_counts[val]) # 绘图设置 plt.figure(figsize=(8, 4)) plt.scatter(x_coords, y_coords, s=100, color='#1f77b4', edgecolor='black') # 调整坐标轴样式 plt.xlabel('测量值') plt.ylabel('计数') plt.ylim(bottom=0) plt.grid(axis='x', linestyle='--', alpha=0.7) # 显示图像 plt.show()
可选方案(基于 Seaborn 简化实现)
如果已经安装seaborn库,可以用更简洁的方式实现相同效果:
import seaborn as sns import matplotlib.pyplot as plt data = [74.001, 74.003, 74.015, 74.000, 74.005, 74.004] plt.figure(figsize=(8, 4)) # jitter设为False关闭散点扰动,实现垂直堆叠效果 sns.stripplot(x=data, y=[1]*len(data), jitter=False, size=12, color='#1f77b4', edgecolor='black') plt.xlabel('测量值') plt.ylabel('计数') plt.grid(axis='x', linestyle='--', alpha=0.7) plt.show()
效果调整说明
- 可以修改
size/s参数调整点的大小,color参数修改点的填充色,edgecolor参数修改点的描边颜色 - 如果需要匹配你的示例图样式,调整坐标轴范围、网格样式、标题等参数即可
- 两份代码都兼容含重复数值的数据集,自动处理堆叠逻辑
内容的提问来源于stack exchange,提问作者Andrea Guerrero Delgado
相关产品推荐
相关产品推荐

