我有一個大文件(稱爲Data),它是一個字符串列表,它的175693行,但我只想使用第8行到151799行。該文件的縮寫版本如下:在matplotlib中繪製字符串列表
Name Group Measured Modelled Residual Weight
pdwl1 pdwls 2083.620 2089.673 -6.052805 9.4067000E-04
pdwl2 pdwls 2186.748 2199.771 -13.02284 8.9630800E-04
pdwl3 pdwls 2150.983 2160.259 -9.275730 9.1121100E-04
pdwl4 pdwls 2133.283 2142.970 -9.686504 9.1877100E-04
pdwl5 pdwls 2241.741 1769.331 472.4097 8.0E-04
pst_1 devwls 2191.200 2094.658 96.54200 1.000000
pst_2 devwls 2194.160 2094.070 100.0900 1.000000
pst_3 devwls 2190.790 2093.375 97.41500 1.000000
pst_4 devwls 2191.700 2092.671 99.02900 1.000000
pst_5 devwls 2188.260 2092.739 95.52100 1.000000
devfl1 devflux 1.2788475E+07 1.2199410E+07 589064.6 1.4030900E-06
devfl2 devflux 1.2208086E+07 1.2044727E+07 163359.4 1.4030900E-06
devfl3 devflux 1.3559062E+07 1.1423958E+07 2135104. 1.4030900E-06
devfl4 devflux 1.2419465E+07 1.1141419E+07 1278046. 1.4030900E-06
devfl5 devflux 1.2070242E+07 1.0925833E+07 1144409. 1.4030900E-06
我需要繪製測量值與模型化的值,我想要一個情節用於建模爲組測量v == pdwls,另一情節用於測量v殘差組== pdwls,那麼對於MEAS v建模來回組= = devwls和devwls的測量殘差圖
這裏是我有什麼
import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('elm3_1-4 - Copy.rei', dtype=None, names=True)
#data = np.genfromtxt('elm3_1-4-pdwls.rei', dtype=None, names=True)
#data = np.genfromtxt('elm3_1-4-devwls.rei', dtype=None, names=True)
for data[6:1643] in data:
plt.subplot(2,2,1)
plt.scatter(data['Measured'], data['Modelled'])
plt.xlabel('Measured (ft)')
plt.ylabel('Modelled (ft)')
plt.title('ELM3_1-4 Pre-Development WLs')
plt.xlim(1000,4000)
plt.ylim(-2000,4000)
plt.scatter(data['Measured'], data['Residual'])
plt.xlabel('Measured (ft)')
plt.ylabel('Residual (Meas - Model) (ft)')
plt.title('ELM3_1-4 Pre-Development: Measured WLs v Resduals')
plt.xlim(1000,4000)
plt.ylim(-1000,1000)
plt.subplot(2,2,2)
plt.show()
for data[1644:151798] in data:
plt.subplot(2,2,3)
plt.scatter(data['Measured'], data['Modelled'])
plt.xlabel('Measured (ft)')
plt.ylabel('Modelled (ft)')
plt.title('ELM3_1-4 Development WLs')
plt.xlim(1000,4000)
plt.ylim(1000,4000)
plt.scatter(data['Measured'], data['Residual'])
plt.xlabel('Measured (ft)')
plt.ylabel('Residual (Meas - Model) (ft)')
plt.title('ELM3_1-4 Development: Measured WLs v Resduals')
plt.xlim(1000,4000)
plt.ylim(-1000,1000)
plt.subplot(2,2,4)
plt.show()
代碼運行但它不生成任何圖。所有我在命令窗口中得到的是:
Line #175688 (got 6 columns instead of 9).
有涉及到的消息在多條線路,而不僅僅是175688. 我編輯這個問題與for循環進入了新例如數據集。
感謝
如果你只是想'1644'和'151798'之間繪製'data'了點,不使用'for'循環,只是情節'數據[1644:151798]'而不是'數據',例如:'plt.scatter(data [1644:151798] ['Measured'],data [1644:151798] ['Modeled'])' – askewchan
好吧,我試過這個plt.scatter(data [7:1643 ] ['Measured'],data [7:1643] ['Modeled'])但我仍然收到Line#175685(有6列而不是9)的消息,當我嘗試打印數據時,它說NameError:name'數據'沒有被定義 – jpspeeddemon
哦,這個錯誤可能來自於'np.genfromtxt'的第一行,而不是你的繪圖。看起來文件中的第175685行有6個值,而不是9個。您必須查看您的輸入文件。 – askewchan