我正在使用matplotlib在Python中绘制数据.我正在根据一些计算更新绘图的数据,并希望ylim和xlim自动重新缩放.相反,发生的是基于初始图的限制来设置比例.MWE是
import random
import matplotlib.pyplot as pyplot
pyplot.ion()
x = range(10)
y = lambda m: [m*random.random() for i in range(10)]
pLine, = pyplot.plot(x, y(1))
for i in range(10):
pLine.set_ydata(y(i+1))
pyplot.draw()
Run Code Online (Sandbox Code Playgroud)
第一个绘图命令生成一个图[0,1]
,我可以看到一切都很好.最后,y数据阵列的[0,10)
大部分都大于1
,但数字的y限制仍然存在[0,1]
.
我知道我可以手动更改限制pyplot.ylim(...)
,但我不知道要改变它们的内容.在for
循环中,我可以告诉pyplot缩放限制,就好像它是第一次被绘制一样吗?
我需要使用matplotlib自动获取适合数据的图.这是我给出的代码:
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
....
lines = LineCollection(mpl.line_holder, colors=mpl.colorholder , linestyle='solid')
plt.axes().add_collection(lines)
plt.axes().set_aspect('equal', 'datalim')
plt.draw()
plt.show()
Run Code Online (Sandbox Code Playgroud)
这会创建一个绘图,但无论数据是什么,窗口总是相同的(0-~.8),即使所有数据都在该窗口之外.生成的窗口无法缩小,只有在,因此这是一个主要问题.我找不到任何设置任何类型的大小,也无法找到有关默认值的详细信息.我需要窗口自动适应数据,但我找不到任何功能(由于某种原因,autoscale_on(True)不会这样做).数据变化很大,因此设置硬限制不是一种选择.如何才能正确显示?
假设我有一个绘图函数,它接受一个axis参数(或返回一个).是否有一些低级方法用于转置整个图,使x轴成为y轴,反之亦然?或者甚至是绘图之前的轴,以便绘图功能通过依赖轴功能正确地完成所有操作(标记)?
我知道如何"手动"执行此操作,但我想知道是否存在允许这种转换的略微隐藏的抽象级别.
我是Python新手,也是图形新手!问题是我正在实现基于 EKF 地图的定位,并且我想绘制不确定性椭圆。为此,每次我想用所有值更新图形时,我都会调用一个函数调用 animate,其中包含以下内容:
ellipse = matplotlib.patches.Arc([x_B_1[0,0],x_B_1[0,1]],P_B_1[0,0],P_B_1[1,1],x_B_1[0,2]*180/pi,color='green', linewidth='0.5')
ax.add_patch(ellipse)
Run Code Online (Sandbox Code Playgroud)
还有其他一些东西
问题是,通过这样做,图中的所有省略号都饱和了,我变得一团糟(我无法发布该图的图片,因为这是我的第一篇文章,论坛不允许我这样做),我只想最后一个椭圆。
我该怎么做?
我不能这样做,因为图中的所有内容都丢失了,我只想删除椭圆而不是该图中的其余内容,也许这是不可能的...是否有更新椭圆参数的选项我不绘制新的,而是更新已经绘制的?
干杯!