2014-05-08 137 views
2

我想繪製具有非規則的 x軸值的2D離散化矩形網格,例如, CFD中使用的典型離散化網格。 的代碼的示例可以是:用matplotlib繪製2D網格網格

fig = plt.figure(1,figsize=(12,8)) 

    axes = fig.add_subplot(111) 

    matplotlib.rcParams.update({'font.size':17}) 

    axes.set_xticks(self.xPoints) 
    axes.set_yticks(self.yPoints) 

    plt.grid(color='black', linestyle='-', linewidth=1) 

    myName = "2D.jpg" 

    fig.savefig(myName) 

其中self.xPoints和self.yPoints是1D非正規載體。

這段代碼產生良好的離散化網格,問題是 xtics和ytics標籤因爲它們出現xPoints和ypoints中(它們重疊)的所有值。 如何輕鬆重新定義軸中的打印值? 假設我只想顯示x和y的最小值和最大值,而不是來自離散網格的所有值。 我不能張貼一個示例圖,因爲這是我第一次在這裏問一些東西(如果需要,我可以通過郵件發送)

+0

你檢查了下面的答案嗎? –

回答

0

問題是,您明確告訴matplotlib在您寫下時標記每個點:

axes.set_xticks(self.xPoints) 
axes.set_yticks(self.yPoints) 

註釋掉這些行,看看結果是什麼樣子。

當然,如果你只是想標記的第一和最後一個點,就變成:

axes.set_xticks([self.xPoints[0], self.xPoints[-1]]) 
... 
+0

感謝您的回答。但是,如果我評論set_xticks和set_yticks,則不會打印任何內容,因爲我正在使用xticks顯示分散的網格。 – DaniC

0

如果被axes.set_xticks()指定的網格線,我不認爲這將有可能顯示不重疊蜱在你的情況。

我可以具有爲您解決:

... 

ax = plt.gca() 

#Arr_y: y-direction data, 1D numpy array or list. 
for j in range(len(Arr_y)): 
    plt.hline(y = Arr_y[j], xmin = Arr_x.min(), xmax = Arr_x.max(), color = 'black') 

#Arr_x: x-direction data, 1D numpy array or list. 
for i in range(len(Arr_x)): 
    plt.vline(x = Arr_x[i], ymin = Arr_y.min(), ymax = Arr_y.max(), color = 'black') 

#Custom your ticks here, 1D numpy array or list. 
ax.set_xticks(Arr_xticks) 
ax.set_yticks(Arr_yticks) 

plt.xlim(Arr_x.min(), Arr_x.max()) 
plt.ylim(Arr_y.min(), Arr_y.max()) 

plt.show() 
... 

hlinesvlines是水平和垂直線,則可以指定與在x和y方向上的邊界數據的那些行。

我試過用60×182的非均勻網格網格花費我1.2秒,希望我可以在這裏張貼圖片。