创建2D地图

时间:2019-01-28 22:55:53

标签: python pandas matplotlib

我有一张坐标表和每个坐标值。如图所示:

Data format

我怎样才能用这些数据制作地图(我需要一个二维表示,每个坐标都表示为一个矩形,并且将值写在里面-如下图所示) How i want results to be

我尝试使用meshgrid-,但没有帮助。任何帮助将不胜感激

plt.figure(figsize=(15,15))
path=r'C:\GF\three_3Deep\Scripts\Data\21ACI_Massive_Prec_Result\results_run5.csv'
data=pd.read_csv(path)
#u = np.arange(-2, 2)
u=data.FX
#v = np.arange(-1, 5)
v=data.FY
X,Y = np.meshgrid(u, v)

#Z = X**2/25 + Y**2/4
size_of_mesh=(len(X),len(X))
z=np.zeros(size_of_mesh)
z1 = pd.DataFrame(data,columns=['Slant1_Avg.euclidean'])
np.fill_diagonal(z, z1)

print('z:\n', Z)
#plt.set_cmap('gray')
plt.pcolor(z)
plt.show() 

1 个答案:

答案 0 :(得分:0)

IIUC,您只想将数据转换为2D数组以绘制为热图。我认为您没有重复点。您可以使用熊猫轻松地将数据转换为2D数组:

import pandas as pd

# Create sample data
np.random.seed(42)
pts = np.random.choice(np.arange(20*20), size=30, replace=False)
X, Y = np.unravel_index(pts, (20, 20))
Z = np.random.random(size=30) * 50
df = pd.DataFrame(np.column_stack([X, Y, Z]), columns=list('XYZ'))

# Reshape data
df = df.pivot(index='Y', columns='X', values='Z')

Seaborn具有heatmap功能来注释您的地图。根据您是希望矩形填充到下一个点还是成为单位正方形(1x1),可以执行以下方法之一:

sns.heatmap(df, annot=True)

enter image description here

OR

sns.heatmap(df.reindex(index=np.arange(20), columns=np.arange(20)), annot=True)

enter image description here