我正在使用 numpy 函式繪制一個矢量場quiver(),它可以作業。但我想在下面的情節中強調cowlick:

我不知道該怎么做,但是增加中心箭頭的密度可能會奏效。為此,我想求助于一些選項np.meshgrid(),可以讓我在中心獲得更緊密的 x,y 坐標點。似乎沒有內置線性,二次或其他規范。我不確定是否sparse可以為此進行修改。
代碼:
lim = 10
int = 0.22 *lim
x,y = np.meshgrid(np.arange(-lim, lim, int), np.arange(-lim, lim, int))
u = 3 * np.cos(np.arctan2(y,x)) - np.sqrt(x**2 y**2) * np.sin(np.arctan2(y,x))
v = 3 * np.sin(np.arctan2(y,x)) np.sqrt(x**2 y**2) * np.cos(np.arctan2(y,x))
color = x**2 y**2
plt.rcParams["image.cmap"] = "Greys_r"
mult = 1
plt.figure(figsize=(mult*lim, mult*lim))
plt.quiver(x,y,u,v,color, linewidths=.006, lw=.1)
plt.show()
關閉回圈,多虧了接受的答案,我終于能夠在網格密度之間取得平衡,因為我從@flwr 學到了要做的事情,并保持矢量場的“cowlick”結構顯眼(避免徑向盡可能圍繞原點的結構):

uj5u.com熱心網友回復:
你可以在任何你想計算你的領域的地方構建點,顫抖會對此感到高興。下面的代碼使用極坐標并非線性拉伸徑向坐標。
import numpy as np
import matplotlib.pyplot as plt
lim = 10
N = 10
theta = np.linspace(0.1, 2*np.pi, N*2)
stretcher_factor = 2
r = np.linspace(0.3, lim**(1/stretcher_factor), N)**stretcher_factor
R, THETA = np.meshgrid(r, theta)
x = R * np.cos(THETA)
y = R * np.sin(THETA)
# x,y = np.meshgrid(x, y)
r = x**2 y**2
u = 3 * np.cos(THETA) - np.sqrt(r) * np.sin(THETA)
v = 3 * np.sin(THETA) np.sqrt(r) * np.cos(THETA)
plt.rcParams["image.cmap"] = "Greys_r"
mult = 1
plt.figure(figsize=(mult*lim, mult*lim))
plt.quiver(x,y,u,v,r, linewidths=.006, lw=.1)

編輯:兩次使用網格網格的錯誤
uj5u.com熱心網友回復:
np.meshgrid只是制作您提供的向量的網格。您可以做的是在中心收縮這個常規網格,以便在中心有更多點(最好用更多點可見),例如:
# contract in the center
a = 0.5 # how far to contract
b = 0.8 # how strongly to contract
c = 1 - b*np.exp(-((x/lim)**2 (y/lim)**2)/a**2)
x, y = c*x, c*y
plt.plot(x,y,'.k')
plt.show()
或者,您可以x,y完全不依賴于網格的坐標:
x = np.random.randn(500)
y = np.random.randn(500)
plt.plot(x,y,'.k')
plt.show()
但我認為您更喜歡稍微更規則的模式,您可以研究具有自適應距離或類似距離的泊松圓盤采樣,但這里的關鍵點是,對于使用quiver,您可以使用任何坐標集,它們不必在一個規則的網格中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/433240.html
標籤:Python 麻木的 matplotlib
下一篇:在mpf財務圖中添加箭頭
