为什么用python画图_为什么使用Matplotlib绘图太慢?

首先,(尽管这根本不会改变性能)考虑清理你的代码,类似这样:import matplotlib.pyplot as plt

import numpy as np

import time

x = np.arange(0, 2*np.pi, 0.01)

y = np.sin(x)

fig, axes = plt.subplots(nrows=6)

styles = ['r-', 'g-', 'y-', 'm-', 'k-', 'c-']

lines = [ax.plot(x, y, style)[0] for ax, style in zip(axes, styles)]

fig.show()

tstart = time.time()

for i in xrange(1, 20):

for j, line in enumerate(lines, start=1):

line.set_ydata(np.sin(j*x + i/10.0))

fig.canvas.draw()

print 'FPS:' , 20/(time.time()-tstart)

通过上面的例子,我可以达到10fps。

简单的说一下,根据你的确切用例,matplotlib可能不是一个好选择。它面向出版质量数据,而不是实时显示。

然而,你可以做很多事情来加速这个例子。

有两个主要原因,为什么这是如此缓慢。

1)调用fig.canvas.draw()重绘所有内容。这是你的瓶颈。就你而言,你不需要重新绘制轴边界,刻度标签等等。</

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matplotlib是一个流行的Python可视化库,它可以用来绘制各种类型的图表,包括线图、散点图、柱状图、饼图等等。在本文中,我们将介绍如何使用Matplotlib绘制多个变量的图表。 首先,我们需要导入Matplotlib库,并生成一些数据用于绘图。例如,我们可以使用NumPy库生成一些随机数据: ```python import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) ``` 接下来,我们可以使用Matplotlibplot函数绘制两个不同的线图: ```python # 绘制两个线图 plt.plot(x, y1, label='sin') plt.plot(x, y2, label='cos') # 添加图例 plt.legend() # 显示图表 plt.show() ``` 这将生成一个包含两个线图的图表,并在图例中显示每个线的标签。 如果我们想要绘制一个包含多个变量的图表,我们可以使用Matplotlib的subplot函数创建多个子图。例如,我们可以使用如下代码创建一个包含两个子图的图表: ```python # 创建包含两个子图的图表 fig, axs = plt.subplots(2) # 在第一个子图中绘制sin函数 axs[0].plot(x, y1) axs[0].set_title('sin') # 在第二个子图中绘制cos函数 axs[1].plot(x, y2) axs[1].set_title('cos') # 调整子图之间的间距 plt.tight_layout() # 显示图表 plt.show() ``` 这将生成一个包含两个子图的图表,每个子图都包含一个变量的图表。我们可以通过调整subplot函数的参数来创建包含更多子图的图表。 除了使用subplot函数,Matplotlib还提供了许多其他的绘图函数和工具,可以帮助我们创建各种类型的图表。例如,我们可以使用scatter函数创建散点图,使用bar函数创建柱状图,使用pie函数创建饼图等等。Matplotlib的文档中包含了详细的说明和示例,可以帮助我们学习如何使用这些功能来绘制各种类型的图表。 总之,Matplotlib是一个功能强大的Python可视化库,可以帮助我们创建各种类型的图表。通过使用subplot函数和其他绘图函数,我们可以轻松地绘制包含多个变量的图表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值