gpt4 book ai didi

python - 如何使用 matplotlib 创建一个非常大的数据集的条形图?

转载 作者:行者123 更新时间:2023-12-05 06:14:48 25 4
gpt4 key购买 nike

我正在处理的数据是一个 27,000 个元素长的数组,它是几百万个数据点的直方图,但我拥有的是直方图,我需要在我的程序中绘制它,最好使用竖线。

我试过在 matplotlib 中使用 'bar' 函数,但这需要一两分钟的时间来绘制,而仅使用常规绘图(图表上只有点)几乎是立竿见影的,但显然没有达到我想要的效果(即酒吧)。我不确定为什么 bar 函数这么慢,所以我想知道是否有更有效的方法来使用 matplotlib 绘制带有垂直条的直方图?

我已经用 matplotlib 查看了 hist 函数,但据我了解,它的目的是获取数据、制作直方图,然后绘制它,但我已经有了直方图,所以我认为它不适用于我的情况。我非常感谢任何帮助!

这是对 hist 函数文档的引用,也许我遗漏了什么。 https://matplotlib.org/3.2.0/api/_as_gen/matplotlib.pyplot.hist.html

提前致谢!让我知道您是否想要我正在使用的代码示例,但它只是您最通用的 my_axes.plot(my_data)my_axes.bar(my_data)所以我不确定它会有多大帮助。

我现在也看了一下:https://gist.github.com/pierdom/d639a1d3b8934ee31db8b2ab9997ae92 .

这也有效,但与使用 bar 有相同的时间问题,所以我想这只是渲染大量垂直条的问题? (虽然我仍然想知道为什么渲染 27000 点发生得这么快)

最佳答案

显然,这是目前实现的条形图的一个已知和讨论过的限制。看这个issue还有这个discussion .尽管对它的用处存在疑问,但在我的特定情况下,我在顶部有一个工具栏,允许用户放大和移动数据集(这对我的用例来说是非常实用的方法)。

但是,以 stairs 的形式确实存在一个很好的替代方案.只需使用填充,您就会得到一个有效的条形图,性能更高。

import matplotlib.pyplot as plt
import random

bins = range(27001) # Note that bins needs to be one greater then heights
heights = [random.randint(0, i) for i in range(27000)]

ax = plt.gca()
ax.stairs(heights, bins, fill=True)

plt.show()

关于python - 如何使用 matplotlib 创建一个非常大的数据集的条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62724562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com