Matplotlib绘图异常:X轴起始值错误与Y轴数据对应问题
修复Matplotlib跨月日期学习量图表的轴显示问题
你的问题出在日期列表是跨月的(5-31后接1-4),直接把days作为X轴数据传入plt.plot()时,Matplotlib会按照数值大小排序X轴,导致5之后的刻度直接跳到1,自然Y轴数据也跟着错位了。
下面是修复后的代码,能同时解决X轴显示和Y轴对应错误的问题:
import matplotlib.pyplot as plt days = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 1, 2, 3, 4] volumes = [34, 50, 61, 20, 46, 48, 68, 66, 56, 86, 38, 35, 27, 28, 28, 42, 63, 41, 26, 36, 26, 38, 44, 47, 62, 42, 29, 43, 31, 50, 45] # 用数据的索引作为X轴位置,保证原始顺序不被打乱 x_indices = range(len(days)) plt.plot(x_indices, volumes, marker='o', linestyle='-') # 将X轴刻度替换为对应的日期,旋转标签避免重叠 plt.xticks(x_indices, days, rotation=55) plt.xlabel('Days') plt.ylabel('Study Volume') plt.title('Study Volume Over Days') plt.tight_layout() # 自动调整布局,防止标签被截断 plt.show()
关键修复点:
- 用
range(len(days))生成连续的索引作为X轴的底层位置,这样图表会严格按照你输入的日期顺序绘制,Y轴数据就能和对应日期正确匹配。 plt.xticks(x_indices, days)把每个索引位置的刻度标签替换成你定义的日期值,解决X轴显示混乱的问题。plt.tight_layout()会自动调整图表元素的位置,避免旋转后的X轴标签被图表边缘截断。
内容的提问来源于stack exchange,提问作者Anibal Jodorcovsky
相关产品推荐
相关产品推荐

