小编sma*_*bro的帖子

使用matplotlib存储鼠标单击事件坐标

我试图在matplotlib中实现一个简单的鼠标单击事件.我希望绘制一个图,然后使用鼠标选择集成的下限和上限.到目前为止,我能够将坐标打印到屏幕,但不能存储它们以供以后在程序中使用.我还想在第二次鼠标点击后退出与图形的连接.

下面是当前绘制然后打印坐标的代码.

我的问题:

如何将图中的坐标存储到列表中?即click = [xpos,ypos]

是否可以获得两组x坐标,以便在该部分线上进行简单的积分?

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-10,10)
y = x**2

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)

def onclick(event):
    global ix, iy
    ix, iy = event.xdata, event.ydata
    print 'x = %d, y = %d'%(
        ix, iy)

    global coords
    coords = [ix, iy]

    return coords


for i in xrange(0,1):

    cid = fig.canvas.mpl_connect('button_press_event', onclick)


plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib onclick mouseevent

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

插值忽略数组中的零值 - Python

我有两个相同长度的数组

x = array([-243., -242., -241., -240., -239., -238., -237., -236., -235.,
       -234., -233., -232., -231., -230., -229., -228., -227., -226.,
       -225., -224., -223., -222., -221., -220., -219., -218., -217.,
       -216., -215., -214., -213., -212., -211., -210., -209., -208.,
       -207., -206., -205., -204., -203., -202., -201., -200., -199.,
       -198., -197., -196., -195., -194., -193., -192., -191., -190.,
       -189., -188., -187., -186., -185., -184., -183., -182., -181.,
       -180., -179., -178., -177., -176., -175., -174., -173., -172.,
       -171., -170., -169., -168., -167., …
Run Code Online (Sandbox Code Playgroud)

python arrays interpolation matplotlib

7
推荐指数
1
解决办法
1749
查看次数

忽略 nan 值的二维插值

你如何告诉 interp2d 忽略 nan 值?

我有一个带有任意值 z 的表面 x 和 y。

x =   np.array([[9.19632, 9.62141, 10.0829, np.isnan, np.isnan],
        [9.21164, 9.64347, 10.1392, 10.5698,  np.isnan],
        [9.22175, 9.65439, 10.1423, 10.6301, 11.0323],
        [9.21632, 9.67060, 10.1474, 10.6230, 11.0818]])

y =  np.array([[11.5466,11.6485,11.7619, np.isnan, np.isnan],
        [12.4771, 12.5460, 12.5453, 12.7142, np.isnan],
        [13.5578, 13.5581, 13.5505, 13.5309, 13.6081],
        [14.5653, 14.5504, 14.5036, 14.5145, 14.5060]])

z = np.array([[0.466113, 0.0484404, -0.385355, np.isnan, np.isnan],
        [0.366125, -0.160165, -0.548668, -0.888301,np.isnan],
        [-0.0970777, -0.346734, -0.826576, -1.08412, -1.33129],
        [-0.259981, -0.586938, -1.03477, -1.32384, -1.61500]])
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我已经能够使用掩码数组生成上述颜色网格,但是当我尝试使用 2d 插值创建更精细的网格时失败了。以下是我到目前为止所拥有的,请注意,我将 nan 值设置为零以获取此值,因此显然它混淆了“正确”插值。相反,我想忽略它们并将参数空间留空。

f …
Run Code Online (Sandbox Code Playgroud)

python interpolation matplotlib scipy

5
推荐指数
1
解决办法
6774
查看次数

使用嵌套的for循环来评估每个坐标的函数 - python

我试图使用嵌套的for循环来评估2D极坐标的每个组合的函数f(r).

我目前的代码是:

r = np.linspace(0, 5, 10)
phi = np.linespace(0,2*np.pi, 10)

for i in r:
 for j in phi:
    X = f(r) * np.cos(phi)

print X
Run Code Online (Sandbox Code Playgroud)

当我按原样运行时,它返回X作为f(r)的1D数组,cos(phi)是1(即phi = 0).但是我希望r的每个值都有f(r),然后乘以相应的phi值.这将是2D阵列(10乘10),其中评估r和phi的每个组合.

如果您对可能的效率有任何建议,我将不胜感激,因为最终我将以大于10(可能高达10,000)的分辨率运行它并循环数千次.

python arrays numpy nested-loops coordinates

2
推荐指数
1
解决办法
1259
查看次数