Skip to main content
 首页 » 编程设计

python之使用 matplotlib 生成许多图形的最有效方法

2025年05月04日24dyllove98

我需要生成并保存数以千计的散点图,这些散点图本质上是相同的,唯一不同的是“y”变量。最快的方法是什么?

我考虑过创建 Figure 和 Axes 实例,然后像这样在绘图之间简单地清除:

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,因此我假设写入磁盘不会过多地限制速度。

请您参考如下方法:

一种选择是使用多个进程。

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]))