簡體   English   中英

為什么 matplotlib 繪圖比 pd.DataFrame.plot() 慢得多?

[英]Why is matplotlib plotting so much slower than pd.DataFrame.plot()?

親愛的社區,您好,

我在搜索過程中沒有發現類似的東西,希望我沒有監督任何事情。 我有以下問題:

我有一個大數據集,其形狀為 1352x121797(1353 個樣本和 121797 個時間點)。 現在我已經對這些進行了聚類,並希望為每個聚類生成一個圖,其中繪制了該聚類的每個時間序列。

但是,當使用 matplotlib 語法時,它就像超級慢(而且我不確定它來自哪里)。 即使過了 5-10 分鍾,它也沒有完成。

import matplotlib.pyplot as plt
import pandas as pd

fig, ax = plt.subplots()

for index, values in subset_cluster.iterrows(): # One Cluster subset, dataframe of shape (11x121797)
    ax.plot(values)

fig.savefig('test.png')

甚至,在ax.plot(values)之后插入一個中斷時,它仍然沒有完成。 我正在使用 Spyder 並認為這可能是由於 Spyder 總是在控制台中內聯渲染繪圖。

但是,當簡單地使用 Series values.plot()的 pandas 方法而不是ax.plot(values) ,繪圖會出現並在 1-2 秒內保存。

因為我需要 matplotlib 的自定義選項來標准化所有繪圖並使它們看起來更漂亮一點,所以我很想使用 matplotlib 語法。 任何人有任何想法?

提前致謝

編輯:所以雖然嘗試了一下,但渲染似乎是耗時的部分。 當使用后端matplotlib.use('Agg')運行時,繪圖命令運行得更快(如果使用plt.plot()而不是ax.plot() ),但plt.savefig()則需要永遠。 不過,還是應該在相當長的時間內吧? 即使是 121xxx 數據點。

發布答案,因為它可能有助於 OP 或其他人:我遇到了同樣的問題,並發現這是因為我用作 x 軸的數據是一個對象,而 y 軸數據是 float64。 將對象顯式設置為 DateTime 后,使用 Matplotlib 繪圖的速度與 Pandas 的 df.plot() 一樣快。 我猜 Pandas 在繪圖時在理解數據類型方面做得更好。

OP,您可能想檢查您繪制的值是否為正確的類型,或者您是否像我一樣在從文件加載數據幀時遇到了一些問題。

暫無
暫無

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

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