我正在处理的数据是一个27,000个元素长的数组,它是一个几百万个数据点的直方图,但我所拥有的是直方图,我需要在我的程序中绘制它,最好是用竖线。
我试过在matplotlib中使用'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)
,所以我不知道它会有多大的帮助。
我现在也看了一下这个:是的。
这也能工作,但是和使用竖线有同样的时间问题,所以我想这只是渲染大量竖线的问题吧?(尽管我仍然想知道为什么渲染27000点会发生得这么快)
2条答案
按热度按时间0yg35tkg1#
显然,这是条形图的一个已知和讨论过的局限性,因为它是目前实现的。请参见这个issue和这个discussion。虽然关于它的有用性还有一些问题,但在我的特定情况下,我在顶部有一个工具栏,允许用户放大和移动数据集(这是我的用例非常实用的方法)。
然而,一个很好的替代方案确实存在于楼梯的形式。简单地使用填充,你就有了一个有效的条形图,这是更好的表现。
jfgube3f2#
matplotlib的
bar
执行起来应该很快,所以我猜你会把所有的数据点传递给它(虽然你提到你有“直方图数据”,所以如果你能提供更多关于格式的细节,那会很有帮助)。bar
获取条形图的x位置和高度,因此如果希望bar
函数生成直方图,则需要进行bin和计数。这将产生类似于matplotlib的
hist
的结果: