小编imr*_*nal的帖子

当我知道u和v组件的速度(numpy 2d数组)时,如何使用python中的绘图程序绘制流线图?

我希望标题本身很清楚,我正在使用分步法,有限差分公式(Navier-Stokes原始变量形式)解决2D盖子驱动腔(方域)问题,我得到了u和v的速度分量.整个领域,没有手动计算流线,是否有一个命令或绘图工具为我做的工作?

我希望这个问题与编程有关,因为我需要一个绘制流线图的工具而不需要明确地计算它们.

我在流 - 涡度NS形式中解决了同样的问题,我只需要采用流函数的等高线图来获得流线型.

我希望工具或绘图仪是一个python库,并且更多可以在fedora中安装(我可以妥协并使用薄荷)而不用大惊小怪!

如果有人指出图书馆和相关命令(会节省很多时间),我将不胜感激

python velocity numpy matplotlib scipy

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

程序结束后保持 matplotlib 图形打开

是否可以运行生成一个图形(或多个图形)的Python代码并保持这些图形打开,即使在程序结束后也是如此?

目前,当我show()在代码末尾使用时,程序执行$ python somecode.py将停止,直到我关闭该图(或多个图)。从而导致终端无法使用。

我是否需要知道如何为每个人物分配不同的作业 ID,以便这些人物与主程序分开运行?如果是这样我怎样才能做到这一点?

当人们想要使用不同的输入执行有限次数的程序并且不希望将每个结果图形存储为(单独的)文件时,这种需求就变得显而易见。这对于进行快速比较非常方便。

一个明显的解决方案是在单独的终端会话中运行该程序。

python linux workflow matplotlib

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

ValueError:无法将工具包设置为wx,因为它已设置为qt4

以下导入

from mayavi import mlab
Run Code Online (Sandbox Code Playgroud)

生成值错误.

我使用setuptools安装了Mayavi(如此处所述).gui工作得很好(这里和那里有一些bug,但我仍然可以使用模块等).我猜测安装不顺利.任何建议我如何修复我的安装(如果这是什么问题)?

编辑1:

我卸载mayavi并重新安装它(使用pip),但valueError它仍然存在.

编辑2:

我安装的系统是虚拟的Ubuntu 15.04(使用VMware 6.0.6).我在这里粘贴了pip install mayavi输出.

编辑3: 重新安装以前的版本后Mayavi : 4.3.1,我仍然得到相同的错误.我在用Python : 2.7.9.

python mayavi

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

不同的狡猾的颂歌解说者之间的交换

我有一个可以在scipy.integrate.ode和之间互换的解算器scipy.integrate.odeint.这是代码.

def f(y,s,C,u,v):
    y0 = y[0] # u
    y1 = y[1] # u'
    y2 = y[2] # v
    y3 = y[3] # v'
    dy = np.zeros_like(y)
    dy[0] = y1
    dy[2] = y3

    C = C.subs({u:y0,v:y2})
    dy[1] = -C[0,0][0]*dy[0]**2\
            -2*C[0,0][1]*dy[0]*dy[2]\
            -C[0,1][1]*dy[2]**2
    dy[3] = -C[1,0][0]*dy[0]**2\
            -2*C[1,0][1]*dy[0]*dy[2]\
            -C[1,1][1]*dy[2]**2
    return dy

def solve(C,u0,s0,s1,ds,solver=None):
    from sympy.abc import u,v
    if solver == None: # use lsoda from scipy.integrate.odeint
        s = np.arange(s0,s1+ds,ds)
        print 'Running solver ...'
        return sc.odeint(f,u0,s,args=(C,u,v))
    else: # use any other …
Run Code Online (Sandbox Code Playgroud)

python scipy

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

使用 scipy.integrate 整合向量场(一个 numpy 数组)

我有兴趣使用该scipy.integrate库为给定的初始点集成向量场(即找到流线)。由于矢量场是numpy.ndarray在计算网格上定义的对象,因此必须对网格点之间的值进行插值。有没有集成商处理这个问题?也就是说,如果我要尝试以下操作

import numpy as np
import scipy.integrate as sc
vx = np.random.randn(10,10)
vy = np.random.randn(10,10)
def f(x,t):
    return [vx[x[0],x[1]], vy[x[0],x[1]]] # which obviously does not work if x[i] is a float
p0 = (0.5,0.5)
dt = 0.1
t0 = 0
t1 = 1
t = np.arange(t0,t1+dt,dt)
sc.odeint(f,p0,t)
Run Code Online (Sandbox Code Playgroud)

编辑 :

我需要返回周围网格点的向量场的插值:

def f(x,t):
    im1 = int(np.floor(x[0]))
    ip1 = int(np.ceil(x[1]))
    jm1 = int(np.floor(x[0]))
    jp1 = int(np.ceil(x[1]))
    if (im1 == ip1) and (jm1 == jp1):
        return [vx[x[0],x[1]], vy[x[0],x[1]]]
    else: …
Run Code Online (Sandbox Code Playgroud)

python interpolation scipy numerical-integration pde

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

如何获取对当前图形和轴对象的引用,以便我可以强制条形图 y 轴仅显示整数

有人提出了类似的问题:

如何强制 matplotlib 在 Y 轴上仅显示整数

我正在尝试对条形图执行完全相同的操作。我的问题是 bar 对象没有解压到Fig、ax。这是代码:

import matplotlib.pylab as plt
x = [0, 0.5, 1, 2, 3, 3.5, 4, 4.5, 5, 7.5, 8.5,9]
y = [1,2,2,3,1,2,2,2,2,1,1,0]
width = 0.5
plt.bar(x, y, width, color="pink")
plt.xlabel('score')
plt.ylabel('antall')
plt.show()
Run Code Online (Sandbox Code Playgroud)

和条形图:

条形图

我只想在 y 轴上显示整个整数,在 x 轴上显示相反的整数(即数字 0 到 10,增量为 0.5)。

matplotlib python-3.x

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