Matplotlib绘制一年多数据点图表 2021年三次选举数据拆分方案
问题原因
你当前使用纯整数年份作为x轴数值,2021年的三场选举x轴数值完全一致,matplotlib会将其渲染在同一横坐标位置,导致数据重叠。你可以通过给每场选举分配唯一x坐标、自定义x轴刻度标签的方式解决问题。
解决方案代码
import matplotlib.pyplot as plt # 给每场选举分配唯一x坐标:2021年三场用带小数的年份表示时间间隔 x = [2009, 2013, 2014, 2017, 2021.25, 2021.5, 2021.83] voters = [1678641, 1081605, 1072491, 1147283, 837671, 642165, 596456] # 定义x轴显示的标签,对应每个数据点的实际选举时间 x_labels = ["2009", "2013", "2014", "2017", "2021-04", "2021-07", "2021-11"] plt.plot(x, voters, marker='o') # 加标记点更清晰展示每个独立数据 plt.xticks(x, x_labels) # 将x轴刻度替换为自定义的时间标签 plt.xlabel("选举时间") plt.ylabel("投票数") plt.show()
补充说明
- 如果你不需要严格保持年份之间的时间间隔比例,也可以直接用序号作为x坐标:
x = list(range(len(voters))),再替换为对应的x_labels即可,这样不同选举之间的间隔会完全均匀 - 可以根据展示需求选择柱状图、散点图等其他图表类型,视觉上更易区分同一年的多组数据
内容的提问来源于stack exchange,提问作者kurrkabin
相关产品推荐
相关产品推荐

