簡體   English   中英

如何加快Matplotlib?

[英]How to speed up Matplotlib?

我是Matplotlib的新手,這就是為什么可能會有一種更有效的方式運行我的程序的原因。

它正在繪制一堆具有不同顏色的點(取決於某些因素)。 它不斷以當前顏色狀態循環產生新圖像。 基本上看起來像這樣:

import matplotlib.pyplot as plt

def getColour():
#calculate some stuff with x and y and the changing factors

while True: 
   fig = plt.figure(figsize=(17,10))
   plt.scatter(x, y , c=getColour())
   plt.show()
   plt.close(fig)

我也在嘗試clf()。 但是,它根本沒有改變節奏。 有人有想法嗎? 我究竟做錯了什么?

謝謝!

編輯:目標是每次通過循環時產生一張圖片。 由於我的程序執行速度很慢,因此我的問題是是否有一種方法可以使其運行得更快。 我正在使用python 2.7

有點像動畫:

import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import numpy as np

ms_between_frames = 100
n_points = 100
x = np.arange(n_points, dtype=float) #EDIT
y = np.random.random(n_points)
z = np.random.random(n_points)

def getColour(x, y, z):
    c = np.empty((len(x),3))
    for i in range(len(x)):
        c[i] = [x[i]/n_points, z[i], 1.-z[i]]
    return c

def update(frame_number):
    global x, y
    z = np.random.random(n_points)
    c = getColour(x, y, z)
    graph.set_color(c)

fig = plt.figure(figsize=(17,10))
ax = fig.add_subplot(111)
graph = ax.scatter(x, y , c=getColour(x, y, z))
animation = FuncAnimation(fig, update, interval=ms_between_frames)
plt.show()

編輯:使x保持浮點數,因此getColour內的除法不會返回0(也可以使/float(n_points)

順便說一句,應該有可能只定義一個函數來更新顏色,具體取決於您需要執行的自變量,以避免調用開銷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM