python网格划分_在python中创建一个2d网格
我真的很喜歡編程……
但這是我的問題:
我不能發(fā)布圖像,但我想要的圖是一個(gè)“冠”(兩個(gè)半徑為a的同心圓)
我的意思是,在數(shù)學(xué)上講這很容易定義,但我怎么能用python程序呢?
我想到了這樣的事情:
def Fm1(X, Y):
r =r = sqrt(1.*X**2+1.*Y**2)
cos = 1.*X/r
sin = 1.*Y/r
teta = where( sin >= 0. , arccos(cos) , -arccos(cos) )
teta = where(r == 0. , 0., teta)
return r, teta
def F(r,teta):
X = r*cos(teta)
Y = r*sin(teta)
return X,Y
這些只是讓你從笛卡兒傳遞到極坐標(biāo)的函數(shù),然后:
r=sy.linspace(a,b,N+1) # radius division
t=sy.linspace(0,2.*pi,2**NN) #angle (theta) division
R,T=meshgrid(r,t) #creating a mesh
X,Y = F(R,T)#transform from polar to cartesian
#Plotting :
fig=plt.figure()
ax=fig.add_subplot(111)
ax.plot(X, Y)
plt.show()
但結(jié)果是:同心多邊形.我希望我從半徑a到半徑b和2 ** NN線(原點(diǎn)中心和給定角度)等距離處有N 1個(gè)圓.
對(duì)不起,我知道這真是一個(gè)微不足道的問題,
謝謝
解決方法:
在我的回答中,我將使用兩個(gè)庫(kù):
import numpy as np
import pylab
我相信這些是您設(shè)置中的常量:
r_a = 0.50
r_b = 0.75
circles = 6
lines = 50
origin = (0, 0)
選項(xiàng)1:直接繪圖
首先,繪制圓圈:
for r in np.linspace(r_a, r_b, circles):
pylab.gca().add_patch(pylab.Circle(origin, radius=r,
fill=False, color='black'))
然后繪制線條:
r_ab = np.array([r_a, r_b])
for theta in np.linspace(0, 2 * np.pi, lines):
pylab.plot(np.cos(theta) * r_ab,
np.sin(theta) * r_ab, color='red')
最后,顯示:
pylab.axis('scaled')
pylab.show()
結(jié)果:
選項(xiàng)2:繪制細(xì)分:
(導(dǎo)入庫(kù)并設(shè)置常量后,如上所述.)首先,計(jì)算點(diǎn)位置:
r,t = np.meshgrid(np.linspace(r_a, r_b, circles),
np.linspace(0, 2 * np.pi, lines))
x = r * np.cos(t)
y = r * np.sin(t)
然后繪制圓圈(就像你一樣)并繪制線條
# Plot circles
pylab.plot(x, y)
# Plot lines (first and last x and y of each theta)
pylab.plot(np.vstack((x[:,0], x[:, -1])),
np.vstack((y[:,0], y[:, -1])))
最后,顯示:
pylab.axis('scaled')
pylab.show()
結(jié)果:
注意:
畢竟,我認(rèn)為你真正需要的只是選項(xiàng)2中關(guān)于繪制線條的最后一點(diǎn).我會(huì)在這里為所有未來的讀者保留所有這些其他答案.
標(biāo)簽:python,matplotlib,grid,mesh
來源: https://codeday.me/bug/20190629/1330154.html
總結(jié)
以上是生活随笔為你收集整理的python网格划分_在python中创建一个2d网格的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Easy AR初级开发教程
- 下一篇: MYSQL中最基础的的聚合函数(重点!)