2

任何人都可以帮我解决这个问题,我是绘图的新手。

基本上我有 DocId 的列表,这些列表有一些数字,不一定按顺序排列,这需要在 X-Axies 中出现,而 timelst 应该在 Y-Axies 中出现。

下面的代码实际绘制它,但 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')

请尽早帮助我。

4

1 回答 1

1

更新:我添加了两条线,一条用于访问轴属性,另一条用于强制显示所有标签。为了避免标签重叠,我还添加了参数rotateplt.ticks将标签旋转 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()

这会给你类似的东西 输出

于 2013-08-27T07:40:28.067 回答