2016-04-21 148 views
1

連接問題Plot 2D Numpy Array, 我試圖繪製的:負numpy的第二陣列

tdos = np.transpose(tdos) 
# plot 
plt.plot(tdos[0], tdos[1]) 
plt.plot(tdos[0], -1.0*tdos[2]) # here, basically, I need the plot upside down 

,這是給錯誤:

plt.plot(tdos[0], -1*tdos[2]) 
TypeError: unsupported operand type(s) for *: 'int' and 'numpy.ndarray' 

我不明白爲什麼。儘管錯誤足夠清楚。

轉置TDO的樣子:

[['-3.463' '-3.406' '-3.349' ..., '10.594' '10.651' '10.708'] 
['0.0000E+00' '0.0000E+00' '-0.2076E-29' ..., '0.2089E+02' '0.1943E+02' 
    '0.2133E+02'] 
['0.0000E+00' '0.0000E+00' '-0.3384E-30' ..., '0.3886E+02' '0.3915E+02' 
    '0.3670E+02'] 
['0.0000E+00' '0.0000E+00' '-0.1181E-30' ..., '0.9742E+03' '0.9753E+03' 
    '0.9765E+03'] 
['0.0000E+00' '0.0000E+00' '-0.1926E-31' ..., '0.9664E+03' '0.9687E+03' 
    '0.9708E+03']] 
+0

什麼是'tdos'?不知道里面的東西很難說。但是'-1'A'beinng'A'一個numpy數組是非常好的(或者甚至是'-A'這個更短)。 –

+0

@imaluengo:謝謝你的評論。它現在更新。 – BaRud

+2

'tdos'似乎是一個字符串數組。在繪圖之前嘗試添加'tdos = tdos.astype(np.float)'。它會將數字字符串轉換爲浮點值。 –

回答

0

我,爲什麼你帶出來的numpy的二維數組的問題有點困惑時,你似乎想要做散點圖有一個倒軸。如果你真的想你的數據的2D情節,嘗試imshow:

plt.imshow(tdos) 

,因爲它開始在左上角自動繪製它會變成你的numpy的陣列倒掛全部由自己(用於圖像數據)。

要繪製你的陣列通常你會用:

plt.imshow(tdos, origin="low") 

如果你真的想和一個軸的散點圖倒:

plt.plot(tdos[0], tdos[2]) 
plt.gca().invert_yaxis() 

Reverse Y-Axis in PyPlot。對我來說,這比乘以-1稍微乾淨一點,但那也可以。