使用Matplotlib滑块更新等高线图级别

被叫

我正在尝试使用滑块更改matplotlib填充轮廓图上颜色级别的值。也就是说,轮廓线f(x,y,z,np.linspace(a,b,n)),其中滑块将控制a和b并在移动滑块时更改绘图颜色级别。以下代码采用列格式的数据,将其转换为Contourf所需的形式,然后实现滑块。这是我尝试过的:

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

data=np.genfromtxt('file.dat',skip_header=1)
len=np.sqrt(data[:,0].size)
x=np.reshape(data[:,0],(len,len))       
y=np.reshape(data[:,1],(len,len))
z=np.reshape(data[:,3],(len,len))

l=plt.contourf(x,y,z,np.linspace(0,100,255))

axmax = plt.axes([0.25, 0.1, 0.65, 0.03])  #slider location and size
axmin  = plt.axes([0.25, 0.15, 0.65, 0.03])
smax = Slider(axmax, 'Max',0, 100, 50)      #slider properties
smin = Slider(axmin, 'Min', 0, 100, 0)

def update(val):
    l.levels(np.linspace(smin.val,smax.val,255))#changing levels of plot
    fig.canvas.draw_idle()                      #line that throws error
smax.on_changed(update)
smin.on_changed(update)

plt.show()

当滑块移动而相关滑块为'TypeError:'numpy.ndarray'对象不可调用'时,会抛出大量matplotlib错误,该错误由该行抛出

fig.canvas.draw_idle()
M4rtini

问题是这l.levels是一个数组,因此您必须更改此数组中的值。在我的测试中,更改这些值不会导致绘图更新。因此,另一种解决方案是只清除轴并重绘绘图。

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

data=np.random.random([25,4])
data = data*100
len=np.sqrt(data[:,0].size)
x=np.reshape(data[:,0],(len,len))       
y=np.reshape(data[:,1],(len,len))
z=np.reshape(data[:,3],(len,len))

l=plt.contourf(x,y,z,np.linspace(0,100,255))
contour_axis = plt.gca()

axmax = plt.axes([0.25, 0.1, 0.65, 0.03])  #slider location and size
axmin  = plt.axes([0.25, 0.15, 0.65, 0.03])
smax = Slider(axmax, 'Max',0, 100, 50)      #slider properties
smin = Slider(axmin, 'Min', 0, 100, 0)


def update(val):
    contour_axis.clear()
    contour_axis.contourf(x,y,z,np.linspace(smin.val,smax.val,255))
    plt.draw()                   
smax.on_changed(update)
smin.on_changed(update)

plt.show()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定范围内的matplotlib等高线图

来自分类Dev

Matplotlib:如何为等高线图调整颜色栏中的线宽?

来自分类Dev

ggplot2等高线图中的自定义级别?

来自分类Dev

等高线图x标签

来自分类Dev

在matplotlib等高线图中手动设置标签错误

来自分类Dev

为什么绘制二维数组时matplotlib等高线图失败

来自分类Dev

Python Matplotlib等高线图中的非线性缩放

来自分类Dev

Matlab:用等高线填充等高线图

来自分类Dev

多元高斯的等高线图

来自分类Dev

如何在matplotlib imshow等高线图的顶部显示数据点?

来自分类Dev

从数据框创建等高线图

来自分类Dev

填充matplotlib等高线图

来自分类Dev

填充matplotlib等高线图

来自分类Dev

在matplotlib中绘制最小二乘估计函数的等高线图

来自分类Dev

带有lognorm的matplotlib等高线图-颜色栏级别

来自分类Dev

Matplotlib:等高线图的数据三次插值(或FIT)

来自分类Dev

在给定范围内的matplotlib等高线图

来自分类Dev

从matplotlib等高线图中提取特定路径

来自分类Dev

八度等高线图

来自分类Dev

等高线图x标记

来自分类Dev

等高线图例-Matplotlib

来自分类Dev

Matlab:用等高线填充等高线图

来自分类Dev

使用函数绘制等高线图

来自分类Dev

坏等高线图

来自分类Dev

在 matplotlib 等高线图中设置轴比例

来自分类Dev

条件等高线图

来自分类Dev

平滑边缘等高线图

来自分类Dev

Python 中 matplotlib 等高线图的 ValueError

来自分类Dev

散景中的等高线图