我正在嘗試使用 Matplotlib 制作一個簡單的散點圖。我為 x 傳遞一個 Numpy 陣列,為 y 傳遞另一個陣列:
df = df.to_numpy() # this was originally a pandas DataFrame
print(df)
plt.scatter(df[:,1], df[:,2])
plt.show()
列印輸出:
[['B' '-693.3127738066283' '19.14412552031358']
['B' '-1633.974496310751' '40.13395450795514']
['B' '-2010.8973373308845' '-37.64969595561755']
...
['R' '-1034.7669874549774' '-76.93110447814361']
['R' '745.6579736997674' '-51.74835753276244']
['R' '-1473.8940519681794' '-28.58246870754514']]
但是,該圖輸出以下內容:

為了更好地了解正在發生的事情,如果我只繪制前三個資料點,它看起來像這樣:

因此 x 和 y 坐標被“繪制”,但軸沒有有意義的比例或值。為什么會發生這種情況,如何制作常規散點圖?
uj5u.com熱心網友回復:
正如您從列印中看到的,df僅包含字串。matplotlib不知道該怎么處理他們。
改變:
plt.scatter(df[:,1], df[:,2])
和:
plt.scatter(df[:,1].astype(float), df[:,2].astype(float))
它所做的是將陣列轉換為matplotlib知道如何處理的數字型別。當然,這是假設陣列包含僅表示有效數字的字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/473868.html
標籤:Python matplotlib
上一篇:Python:在條形圖中的條形旁邊顯示值。顯示大于實際值的值
下一篇:重疊約束3d子圖
