gpt4 book ai didi

python - matplotlib 非常慢。正常吗?

转载 作者:太空狗 更新时间:2023-10-29 16:55:08 35 4
gpt4 key购买 nike

我正在使用由 400 个子图组成的 matplotlib 创建几个 pdf 图。每个只有 5 个数据点。在一台好的计算机上保存 5 张 pdf 图片需要 420 秒。有没有什么方法可以优化代码,或者这对 matplotlib 来说是正常的?

绘图部分代码:

plot_cnt = 1
for k in np.arange(K_min, K_max + 1):
for l in np.arange(L_min, L_max + 1):
ax = plt.subplot(grid[0], grid[1], plot_cnt)
plot_cnt += 1
plt.setp(ax, 'frame_on', False)
ax.set_ylim([-0.1, 1.1])
ax.set_xlabel('K={},L={}'.format(k, l), size=3)
ax.set_xlim([-0.1, 4.1])
ax.set_xticks([])
ax.set_yticks([])
ax.grid('off')
ax.plot(np.arange(5), (data['S1']['Azimuth'][:, k - 1, l + offset_l] + \
data['S1']['Delta Speed'][:, k - 1, l + offset_l] + \
data['S1']['Speed'][:, k - 1, l + offset_l]) / 3,
'r-o', ms=1, mew=0, mfc='r')
ax.plot(np.arange(5), data['S2'][case][:, k - 1, l + offset_l],
'b-o', ms=1, mew=0, mfc='b')
plt.savefig(os.path.join(os.getcwd(), 'plot-average.pdf'))
plt.clf()
print 'Final plot created.'

最终图片: enter image description here

最佳答案

根据@rowman 所说的内容,您可以在一个轴上完成所有操作(当您关闭所有刻度等时)。像这样的东西:

K_max = 20
K_min = 0
L_max = 20
L_min = 0
ax = plt.subplot(111)
x_offset = 7 # tune these
y_offset = 7 # tune these
plt.setp(ax, 'frame_on', False)
ax.set_ylim([0, (K_max-K_min +1)*y_offset ])
ax.set_xlim([0, (L_max - L_min+1)*x_offset])
ax.set_xticks([])
ax.set_yticks([])
ax.grid('off')



for k in np.arange(K_min, K_max + 1):
for l in np.arange(L_min, L_max + 1):
ax.plot(np.arange(5) + l*x_offset, 5+rand(5) + k*y_offset,
'r-o', ms=1, mew=0, mfc='r')
ax.plot(np.arange(5) + l*x_offset, 3+rand(5) + k*y_offset,
'b-o', ms=1, mew=0, mfc='b')
ax.annotate('K={},L={}'.format(k, l), (2.5+ (k)*x_offset,l*y_offset), size=3,ha='center')
plt.savefig(os.path.join(os.getcwd(), 'plot-average.pdf'))

print 'Final plot created.'

运行大约一两秒。我认为所有时间都花在设置内部相当复杂的 axes 对象上。 output with fake data

关于python - matplotlib 非常慢。正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13046127/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com