我面临的问题是,当我使用滑块增加/减少值时,我无法确定如何更新图形。在
我正在创建一个x,y网格,然后绘制它,并更新数组中的值以定义新网格。我想能够移动滑块,看到一个更细/更粗的网格,并更新绘图和轴。在
另外,我希望用户能够移动网格线互动与鼠标。这不包括在示例代码中。有人知道如何实现这一点吗?在
关于用滑块更新绘图上的值,也有类似的问题被问过,但也许没有一个能解决这个具体问题;有人能帮我找出我做错了什么吗?我知道我没有任何东西可以重新绘制绘图(虽然我已经测试过各种东西),但不确定如何实现这一点,因为M.plotGrid()创建了网格,因此它可能/可能没有使用简单图canvas.draw_空闲(). 在
这是我的代码:
#Create simple evenly spaced mesh and allow slider to change values
from SimPEG import Mesh, np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button, RadioButtons
hx = np.r_[0.1,0.1,0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
hy = np.r_[0.1,0.1,0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
M = Mesh.TensorMesh([hx, hy])
M.plotGrid()
#Define slider location, size, and color for adjusting mesh values
axhx = plt.axes([0.25, 0.1, 0.65, 0.03])
axhy = plt.axes([0.25, 0.15, 0.65, 0.03])
xnode_inc = Slider(axhx, 'X mesh Node', 0.1, 1000.0, valinit=0)
anode_inc = Slider(axhy, 'Y mesh Node', 0.1, 1000.0, valinit=0)
def update(val):
framehx = xnode_inc.val + hx
framehy = ynode_inc.val + hy
M = Mesh.TensorMesh([framehx, framehy])
print M, framehx, framehy
M.plotGrid()
xnode_inc.on_changed(update)
ynode_inc.on_changed(update)
plt.show()
我只能给出一个交互更改
numpy
网格的示例,因为我不使用SimPEG
。这个例子在Ipython/Jupyter笔记本中。这是目前为止生成交互式滑块、下拉菜单、单选按钮等的最简单方法,也就是说,与原始matplotlib滑块类似的复杂设置相比,这有了很大的改进。为了简单起见,我为颜色图添加了一个组合框。在相关问题 更多 >
编程相关推荐