簡體   English   中英

在python中創建一個2d網格

[英]Creating a 2d mesh in python

我真的很喜歡編程......

但這是我的問題:

我不能發布圖像,但我想要的圖是一個“冠”(兩個同心圓,半徑是我的意思,從數學角度來講很容易定義,但我怎么能用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

這些只是讓你從笛卡兒傳遞到極坐標的函數,然后:

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()

但結果是:同心多邊形。 我希望我從半徑a到半徑b和2 ** NN線(原點中心和給定角度)等距離處有N + 1個圓。

對不起,我知道這真是一個微不足道的問題,

謝謝

在我的回答中,我將使用兩個庫

import numpy as np
import pylab

我相信這些是您設置中的常量

r_a = 0.50
r_b = 0.75
circles = 6  
lines   = 50
origin = (0, 0)

選項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()

結果

情節的形象

選項2:繪制細分:

(導入庫並設置常量后,如上所述。)首先,計算點位置

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()

結果

第二個選項結果

注意 :畢竟,我認為你真正需要的只是選項2中關於繪制線條的最后一點。 我會在這里為所有未來的讀者保留所有這些其他答案。

暫無
暫無

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

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