簡體   English   中英

在matplotlib中繪制數據文件中的數據

[英]Plotting data from a data file in matplotlib

我有16行3列的測試數據文件,如下所示:

4.0 4.0 0.992561656631 
7.33333333333 4.0 0.983625465545 
4.0 7.33333333333 0.983625465545 
7.33333333333 7.33333333333 0.973260418741 
10.6666666667 4.0 0.973385993787 
4.0 10.6666666667 0.973385993787 
10.6666666667 7.33333333333 0.96232158762 
7.33333333333 10.6666666667 0.96232158762 
10.6666666667 10.6666666667 0.947002325682 
14.0 4.0 0.963985902172 
4.0 14.0 0.963985902172 
14.0 7.33333333333 0.948250293872 
7.33333333333 14.0 0.948250293872 
14.0 10.6666666667 0.933855073978 
10.6666666667 14.0 0.933855073978 
14.0 14.0 0.91658870141

實際上,前兩列顯示坐標,第三列顯示該坐標中函數的值。 如果您願意,您可以將此表視為4x4矩陣。

現在,我想將此數據文件繪制為彩色2D圖,這樣前兩列顯示坐標,第三列顯示框的顏色。

以下是我的代碼的一部分,應該負責繪圖:

    x3,y3,z3 = np.loadtxt("./data/FDFD_Real_Effectualness_m1m2_mo_%s_%s.dat" % (waveform2, waveform1)).T

    nrows, ncols = final_step_j-1, final_step_k-1
    grid3 = z3.reshape((nrows, ncols))

fig3 = plt.gcf()
            plt.xlabel('$m_1$')
            plt.ylabel('$m_2$')
            plt.imshow(grid3, extent=(x3.min(), x3.max(), y3.min(), y3.max()), origin='lower', aspect='auto', interpolation='nearest', cmap=cm.gist_rainbow)
            fig3.suptitle('Effectualness of %s and %s' % (waveform1, waveform2))
            plt.colorbar()
            plt.draw()
            fig3.savefig('./plots/FDFD_Real_Effectualness_m1m2_mo_%s_%s.pdf' %(waveform1, waveform2), dpi=100)
            plt.close()

結果看起來不像預期的那樣(附圖)。 特別地,從數據中可以清楚地看出結果應該是對角對稱的。 任何建議都是受歡迎的。 在此輸入圖像描述

您需要在將數據重新整形為網格之前對其進行排序:

import pylab as pl
import io
import numpy as np

txt = """4.0 4.0 0.992561656631
7.33333333333 4.0 0.983625465545
4.0 7.33333333333 0.983625465545
7.33333333333 7.33333333333 0.973260418741
10.6666666667 4.0 0.973385993787
4.0 10.6666666667 0.973385993787
10.6666666667 7.33333333333 0.96232158762
7.33333333333 10.6666666667 0.96232158762
10.6666666667 10.6666666667 0.947002325682
14.0 4.0 0.963985902172
4.0 14.0 0.963985902172
14.0 7.33333333333 0.948250293872
7.33333333333 14.0 0.948250293872
14.0 10.6666666667 0.933855073978
10.6666666667 14.0 0.933855073978
14.0 14.0 0.91658870141"""

data = np.loadtxt(io.BytesIO(txt), delimiter=" ")
idx = np.lexsort((data[:, 0], data[:, 1]))
data = data[idx]
pl.imshow(data[:, 2].reshape(4, 4), origin='lower', interpolation='nearest')

這是輸出:

在此輸入圖像描述

暫無
暫無

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

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