我有一张坐标表和每个坐标值。如图所示:
我怎样才能用这些数据制作地图(我需要一个二维表示,每个坐标都表示为一个矩形,并且将值写在里面-如下图所示) 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()
答案 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)
OR
sns.heatmap(df.reindex(index=np.arange(20), columns=np.arange(20)), annot=True)