我需要生成并保存数以千计的散点图,这些散点图本质上是相同的,除了唯一改变的是" y"变量。最快的方法是什么?
我考虑过创建图和轴实例,然后简单地在这样的图之间清除:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.random((100, 1000))
x = list(range(100))
fig = plt.figure()
ax = fig.add_subplot(111)
for i in range(data.shape[1]):
ax.scatter(x, data[:,i])
fig.savefig("%d.png" % i, dpi=100)
ax.cla()
这仍然需要相当长的时间,因此这是一种更好/更快的方法吗?此示例中的每个图像大约为15kb,所以我假设写入磁盘并不会限制速度太多。
答案 0 :(得分:3)
一种选择是使用多个流程。
import matplotlib.pyplot as plt
import numpy as np
import multiprocessing
data = np.random.random((100, 1000))
x = list(range(100))
fig = plt.figure()
ax = fig.add_subplot(111)
def save_plot(i):
ax.scatter(x, data[:,i])
fig.savefig("%d.png" % i, dpi=100)
ax.cla()
p = multiprocessing.Pool(4)
p.map(save_plot, range(data.shape[1]))
答案 1 :(得分:2)
尝试在没有GUI的情况下创建数字。在创建和保存许多数字时,我发现速度要快得多。
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.plot(range(5))
canvas = FigureCanvas(fig)
canvas.print_figure('sample.png')
可以在http://www.dalkescientific.com/writings/diary/archive/2005/04/23/matplotlib_without_gui.html
找到类似的内容