我正在尝试使用 matplotlib 使我的 x 刻度均匀分布。
问题:尽管我尽了最大努力,但 x 轴条和值的间距不均匀
我将不胜感激任何和所有的帮助,谢谢!
这是我试图绘制的代码
# define and store student IDs
student_IDs = np.array([1453,1454,1456,1457,1459,1460,1462,1463,1464,1465,1466, 1467, 1468, 1469,1470])
before_IP_abs_scores = np.array([51,56,73,94,81,83,71,36,43,83,66,62,70,50,83])
after_IP_abs_scores = np.array([65,60,82,71,65,85,78,51,34,80,63,63,62,55,77])
change_IP_abs_scores = after_IP_abs_scores - before_IP_abs_scores
这是我如何存储这个数组中的贵重物品
ip_sc = collections.OrderedDict()
for ii in student_IDs:
ip_sc[ii] = []
for count, key in enumerate(student_IDs):
sci_id[key] = [before_science_ID_abs_scores[count],after_science_ID_abs_scores[count],change_science_ID_abs_scores[count]]
ip_sc[key] = [before_IP_abs_scores[count],after_IP_abs_scores[count],change_IP_abs_scores[count]]
这是我的绘图代码:
fig = plt.figure(4)
fig.set_figheight(18)
fig.set_figwidth(18)
ax = plt.subplot(111)
plt.grid(True)
# ax = fig.add_axes([0,0,1,1])
for ii in student_IDs:
# plt.plot([1,2], ip_sc[ii][:-1],label=r'${}$'.format(ii))
ax.bar(ii, ip_sc[ii][0], width=.5, color='#30524F',edgecolor="white",hatch="//",align='center')
ax.bar(ii, ip_sc[ii][1], width=.5, color='#95BC89',align='center')
ax.bar(ii, ip_sc[ii][2], width=.5, color='#4D8178',align='center')
plt.ylabel('Absolute Score',size=30)
plt.xlabel('Student ID',size=30)
plt.title('IP Scale Scores',size=30)
plt.axhspan(0, 40, facecolor='navy', alpha=0.2,)
plt.axhspan(40, 60, facecolor='#95BC89', alpha=0.2)
plt.axhspan(60, 100, facecolor='seagreen', alpha=0.3)
ax.tick_params(axis='x', which='major', labelsize=16)
ax.tick_params(axis='y', which='major', labelsize=16)
plt.xticks(student_IDs, ['1453','1454','1456','1457','1459', '1460', '1462', '1463', '1464','1465', '1466', '1467', '1468', '1469', '1470'])
# ax.set_yticks(np.arange(0, 81, 10))
plt.ylim(-25,100)
ax.legend(labels=["Intense and Frequent IP ","Moderate IP ","few IP ",'Pre', 'Post','Change'],fontsize=15)
plt.show()