亲爱的社区成员们,你好:
我在搜索过程中没有找到类似的内容,希望没有忽略任何东西。我有以下问题:
我有一个大数据集,其形状为 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)
之后插入一个break,它仍然无法完成。 我正在使用Spyder,认为这可能是由于Spyder始终在控制台中内联呈现图。然而,当简单地使用Series values.plot()
的pandas方法,而不是ax.plot(values)
时,图形出现并在1-2秒钟内保存。由于我需要matplotlib的自定义选项来标准化所有的图形并让它们看起来漂亮一点,所以我希望使用matplotlib语法。有人有任何想法吗?
提前致谢
编辑:因此,在尝试一下似乎渲染是耗时的部分时。当使用后端
matplotlib.use('Agg')
运行时,绘图命令可以更快地运行(如果使用plt.plot()
而不是ax.plot()
),但是plt.savefig()
会花费很长时间。然而,即使对于121xxx数据点,它也应该在相当一段时间内完成,对吧?
ax.plot(values)
与values.plot()
不同。由于pandas绘图函数只是基于matplotlib的,除非您绘制不同的内容(就像在这里一样),否则matplotlib在绘制时不可能比pandas慢。如果需要,请随时提供一个最小可复现示例[mcve]。 - ImportanceOfBeingErnestdata.plot( x='timestamp', y=col, label=col, figsize=(20,10))
绘图,用了3.2秒,而使用plt.figure(figsize=(20,10)) plt.plot( data['timestamp'], data[col], label=col)
已经运行了10分钟,仍然没有完成。Pandas在调用Matplotlib之前会对轴缩放、标签等进行一些优化,但这让我想知道是什么导致了如此巨大的差异。显然,最耗时的应该是绘制数据。 - F. Remonato