相关疑难解决方法(0)

set_data和autoscale_view matplotlib

我在同一轴上绘制了多条线,并且每条线都是动态更新的(我使用set_data),问题是我不知道每条线的x和y限制.而axis.autoscale_view(True,True,True)/ axes.set_autoscale_on(True)并没有做到他们应该做的事情.如何自动缩放我的轴?

import matplotlib.pyplot as plt

fig = plt.figure()
axes = fig.add_subplot(111)

axes.set_autoscale_on(True)
axes.autoscale_view(True,True,True)

l1, = axes.plot([0,0.1,0.2],[1,1.1,1.2])
l2, = axes.plot([0,0.1,0.2],[-0.1,0,0.1])

#plt.show() #shows the auto scaled.

l2.set_data([0,0.1,0.2],[-1,-0.9,-0.8])

#axes.set_ylim([-2,2]) #this works, but i cannot afford to do this.  

plt.draw()
plt.show() #does not show auto scaled
Run Code Online (Sandbox Code Playgroud)

我已经提到了这些,这个,这个.在我遇到的所有情况下,x,y限制都是已知的.我在轴上有多条线并且它们的范围发生变化,跟踪整个数据的ymax是不切实际的

一点点探索让我这样,

xmin,xmax,ymin,ymax = matplotlib.figure.FigureImage.get_extent(FigureImage) 
Run Code Online (Sandbox Code Playgroud)

但在这里,我不知道如何从图实例访问FigureImage.

使用matplotlib 0.99.3

python matplotlib

26
推荐指数
1
解决办法
4万
查看次数

Matplotlib自动缩放

我需要使用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)不会这样做).数据变化很大,因此设置硬限制不是一种选择.如何才能正确显示?

python plot visualization matplotlib

9
推荐指数
1
解决办法
3万
查看次数

使用滑块时如何更新直方图?

我想构建正态分布的直方图,并在平均值、标准差和样本量发生变化时更新绘图;类似于这里的帖子。

然而,我对这个update功能很挣扎。在上面的例子中

l, = plot(f(S, 1.0, 1.0))
Run Code Online (Sandbox Code Playgroud)

def update(val):
    l.set_ydata(f(S, sGmax.val, sKm.val))
Run Code Online (Sandbox Code Playgroud)

使用但绘制直方图时必须如何更改?因此,我不确定如何使用返回值plt.hist,将它们正确传递给update,然后相应地更新绘图。有人能解释一下吗?

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider


def update(val):
    mv = smean.val
    stdv = sstd.val
    n_sample = round(sn.val)
    # what needs to go here? how to replace xxx
    xxx(np.random.normal(mv, stdv, n_sample))
    plt.draw()


ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)

m0 = -2.5
std0 = 1
n0 = 1000
n_bins0 = 20

nd …
Run Code Online (Sandbox Code Playgroud)

python slider matplotlib

6
推荐指数
1
解决办法
2741
查看次数

Matplotlib不会显示默认居中的多边形图?

对于我到目前为止看到的所有类型的情节,matplotlib当没有xlim(), ylim()给出值时,它们会自动居中.例:

import matplotlib.pyplot as plt
A_pts = [(162.5, 137.5), (211.0, 158.3), (89.6, 133.7)]
ax = plt.subplot(111)
ax.scatter(*A_pts)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是当我画一个 Polygon

ax = plt.subplot(111)
triangle = plt.Polygon(A_pts, fill=None, edgecolor='r')
ax.add_patch(triangle)
plt.show()
Run Code Online (Sandbox Code Playgroud)

绘图窗口显示[0, 1]两个轴的限制,这导致多边形不可见.我必须明确传递适当的限制,以便它将显示在绘图窗口中

ax.set_xlim(80, 250)
ax.set_ylim(120, 170)
Run Code Online (Sandbox Code Playgroud)

这是设计还是我错过了什么?

python polygon matplotlib

4
推荐指数
2
解决办法
1170
查看次数

标签 统计

matplotlib ×4

python ×4

plot ×1

polygon ×1

slider ×1

visualization ×1