亲爱的社区,您好,
我在搜索过程中没有发现类似的东西,希望我没有监督任何事情。我有以下问题:
我有一个大数据集,其形状为 1352x121797(1353 个样本和 121797 个时间点)。现在我已经对这些进行了聚类,并希望为每个聚类生成一个图,其中绘制了该聚类的每个时间序列。
但是,当使用 matplotlib 语法时,它就像 super 慢(而且我不确定它来自哪里)。即使过了 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 总是在控制台中内联渲染绘图。但是,当简单地使用系列
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,您可能想检查您绘制的值是否为正确的类型,或者您是否像我一样在从文件加载数据帧时遇到了一些问题。
关于python - 为什么 matplotlib 绘图比 pd.DataFrame.plot() 慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154530/