簡體   English   中英

流圖錯誤:無法將浮點NaN轉換為整數

[英]Streamplot error: Cannot convert float NaN to integer

我正在嘗試使用streamplot函數繪制速度場,但是由於某種原因它失敗了。 這是關於函數的原始SO帖子,並帶有示例: 如何在python中使用繪制程序繪制流線,當我知道速度(numpy 2d數組)的u和v分量時? 這個例子對我來說很好。 但是,我試圖修改這些值以簡化功能並模仿初始條件,但現在它不再起作用。

這是我的“簡化”代碼:

import matplotlib.pyplot as plt
import numpy as np
from streamplot import streamplot

x = np.linspace(0, 1, 10)
y = np.linspace(0, 2, 10)
u = np.zeros((len(x), len(y)))
v = np.zeros((len(x), len(y)))
u[:,len(y)-1]=1
speed = np.sqrt(u*u + v*v)

plt.figure()
plt.subplot(121)
streamplot(x, y, u, v,density=1, INTEGRATOR='RK4', color='b')
plt.subplot(122)
streamplot(x, y, u, v, density=(1,1), INTEGRATOR='RK4', color=u,
           linewidth=5*speed/speed.max())
plt.show()

任何建議或幫助表示贊賞。

我認為問題在於(x,y)網格的密度(x,y)順便說一下,您在uv初始化中已經切換了xy )小於streamplot網格的密度。 當您設置density=1(1,1) (它們應該等效)時,則“將域划分為25x25的網格”。 我認為這意味着,與流圖或xy網格的密度相比,如果您的數據在足夠窄的區域中為非零值,則需要進行一些平滑處理。 我無法通過增加這些密度( densitylinspace空間間距)來使其工作。 但是如果您將列的邊緣設為非零值,那似乎可以正常工作。

似乎streamplot函數在這些情況下不是很可靠,也許您應該提交一個bug。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
y = np.linspace(0, 2, 10)
u = np.zeros((y.size, x.size))
v = np.zeros((y.size, x.size))
u[:,-2:] = 1
speed = np.sqrt(u*u + v*v)

plt.figure()
plt.subplot(121)
plt.streamplot(x, y, u, v,density=1, color='b')
plt.subplot(122)
plt.streamplot(x, y, u, v, density=(1,1), color=u, linewidth=5*speed/speed.max())
plt.show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM