【问题标题】:Plotting millions of data points in Python?在 Python 中绘制数百万个数据点?
【发布时间】:2015-03-03 14:10:01
【问题描述】:

我写了一个复杂的代码。该代码产生一组我想绘制它们的数字。问题是我不能把这些数字放在一个列表中,因为它们有2 700 000 000。 所以我需要绘制一个点然后产生第二个点(第一个点被第二个点替换,所以第一个点被删除,因为我无法存储它们)。这些数字是在代码的不同部分生成的,因此我需要保留(MATLAB 代码)该图。 为了让你更容易想象,我在这里写了一个简单的代码,我想让你告诉我如何绘制它。

import matplotlib.pyplot as plt
i=0
j=10
while i<2700000000:
    plt.stem(i, j, '-')
    i = i + 1
    j = j + 2
plt.show()

假设我有数十亿个ij

【问题讨论】:

  • 不清楚你在这里问什么。您希望绘制 27 亿个点中的哪一个?
  • 我相信你应该可以绘制 27 亿个点。将其保存在列表中可能不可行,但如果您正在计算动态值,则可以使用生成器。
  • @OliverCharlesworth 假设 i 从零开始到 27 亿 x-axis 并且 j 是生成的具有不同值的数字 y-axis
  • @Bair,我不是即时计算值。而且我已经尝试过,但无法将所有内容都放入列表中。我没有足够的内存。

标签: python plot large-data


【解决方案1】:

嗯,我不确定我是否理解正确,但这是:

import matplotlib.pyplot as plt
i=0
j=10
fig=plt.figure()
ax=fig.gca()
while i<10000: # Fewer points for speed.
    ax.stem([i], [j]) # Need to provide iterable arguments to ax.stem
    i = i + 1
    j = j + 2
fig.show()

生成下图: 这不是你想要达到的目标吗?毕竟所有输入的数字都没有存储在任何地方,只是在生成后立即添加到图中。您实际上并不需要 Matlab 的 hold 等价物,直到您调用 fig.show()plt.show() 来显示当前图形,该图形才会显示。

或者您是否正在尝试解决无法将matplotlib.figure 保存在 RAM 中的问题?在这种情况下,我的回答不能回答你的问题。然后,您要么必须按照 cmets 中的建议将部分数字(仅部分数据)保存为图片并将它们组合起来,要么按照其他答案中的建议考虑另一种显示数据的方式。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 2017-01-11
    • 2020-09-28
    • 2023-04-03
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多