我從文本文件中輸入數據與柱結構或多或少像這樣:重新縮放軸從熊貓數據幀
x y density
我需要繪製密度的熱圖(X,Y )。
我剛剛開始使用pyplot和pandas,我不確定如何高效地實現此功能。
我第一次嘗試只是裝載在列,並與
plt.pcolor(OrbData[['x']], OrbData[['y']], OrbData[['density']] )
密謀但失敗了,因爲顏色值必須在數組中。所以現在我使用x,y值作爲多索引並拆開數據框。
這裏是我的腳本
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
Morbs = 2
OrbFile = "69.0000000orbs.dat"
### Load in the data using pandas
OrbData = pd.read_csv(OrbFile, sep='\s+', usecols = [ 0, 1, 7 ], header= None, names=['x','y','density'], skiprows=2)
OrbData = OrbData.set_index(['x','y'])
OrbData=OrbData.unstack()
plt.figure(1)
plt.pcolor(OrbData[['density']], cmap='hot')
plt.gca().set_aspect('equal')
plt.show()
這個近乎完美的作品,但在情節軸顯示的記錄數(0.50),而不是指數值(-2,2)。
如果我嘗試plt.pcolor(OrbData[['x']], OrbData[['y']], OrbData[['Mag1']], cmap='hot')
與解壓縮的數據,我得到一個錯誤 KeyError: "['x'] not in index"
。
如果我嘗試訪問索引值使用OrbData.index
我只恢復x值(行),我不知道如何訪問y值(列)。
我可以通過幾種方式來做到這一點,但他們都感到哈克和低效率。
1)保存在x,y分別列前的解包
2)轉置數據幀,並使用OrbData.index得到y值
3)手動重新調節軸在pyplot不知何故
我正在爲動畫製作〜10^5的地塊,每個地塊至少有10^4條記錄,所以我需要的東西不是太浪費。
必須有一些簡單的方法從pcolor可讀取的格式中獲取列數據中的值。
有什麼想法?
使用matplotlib.axes.Axes.contourf方法:https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contourf.html這將爲您提供一個三維圖像,其中x和y爲軸(1.和2.尺寸),密度爲第三維。如果調整cmap參數,則可以爲密度繪製不同的顏色 – 2Obe
您在這裏得不到令人滿意的答案的原因是人們不知道數據的組織方式以及它的外觀。請提供[mcve]和明確的問題描述。 – ImportanceOfBeingErnest