任何人都可以帮我解决这个问题,我是新来的绘图。
基本上我有一些 DocId 的列表,其中有一些数字但不一定按顺序排列,这需要在 X 轴中出现,而 timelst 应该在 Y 轴中出现。
下面的代码实际上绘制了它,但 DocId 没有被视为各自的 DocID,它被视为范围。所以这需要知道,另外一件事是文档列表很大,可能我有 3000 - 5000 个 DocId,这个图表对于每个 DocID 可以持续很长时间吗?
import matplotlib.pyplot as plt
Doclst= [32409057,32409058,32409059,32409060,32409061,32409062,32409063,32409065,32409066,32409067]
timelst=[120,1,4,35,675,1240,500,889,99,10]
plt.plot(Doclst, timelst, marker='o', linestyle='--', color='r', label='time')
plt.xlabel('Document ID'+"'"+'s')
plt.ylabel('Time in Seconds')
plt.title('Performance')
plt.legend()
plt.savefig('graph.png')
请尽早帮助我。
请您参考如下方法:
更新:我添加了两行,一行访问轴属性,另一行强制显示所有标签。为了避免标签重叠,我还在 plt.ticks 中添加了参数 rotate 以将标签旋转 30°。
如果我做对了你想要的,你应该简单地使用 plt.xticks 来自定义刻度标签。你可以做类似的事情
import matplotlib as mpl
import matplotlib.pyplot as plt
Doclst= [32409057,32409058,32409059,32409060,32409061,32409062,32409063,32409065,32409066,32409067]
timelst=[120,1,4,35,675,1240,500,889,99,10]
fig, ax = plt.subplots()
plt.plot(Doclst, timelst, marker='o', linestyle='--', color='r', label='time')
plt.xlabel('Document ID'+"'"+'s')
plt.ylabel('Time in Seconds')
plt.title('Performance')
plt.legend()
plt.axis([Doclst[0], Doclst[-1], min(timelst)-1, max(timelst)+1])
ax.xaxis.set_major_locator(mpl.ticker.MaxNLocator(len(Doclst)+1))
locs,label = plt.xticks()
plt.xticks(locs, map(lambda x: "%d" %x, locs), rotation=30)
plt.show()
这会给你类似的东西
