[英]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.