csv文件中包括经纬度和风速大小的数据用python进行内插绘图
首先需要导入一些需要的库,如下所示:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
然后读取csv文件,可以使用pandas库的read_csv函数:
data = pd.read_csv("data.csv")
接下来,我们需要将经纬度和风速大小的数据进行处理,将其转换为网格形式,方便后续的内插处理。首先需要确定网格的范围和精度,可以使用numpy库的linspace函数来生成网格坐标:
lon_range = np.linspace(data["经度"].min(), data["经度"].max(), 100)
lat_range = np.linspace(data["纬度"].min(), data["纬度"].max(), 100)
lon_grid, lat_grid = np.meshgrid(lon_range, lat_range)
接着,我们将经纬度坐标和风速大小分别存储在numpy数组中:
lon = data["经度"].values
lat = data["纬度"].values
wind_speed = data["风速大小"].values
然后使用scipy库的griddata函数进行内插处理,得到网格化后的风速大小数据:
wind_speed_grid = griddata((lon, lat), wind_speed, (lon_grid, lat_grid), method='cubic')
最后,可以使用matplotlib库的imshow函数将网格化后的风速大小数据可视化出来:
plt.imshow(wind_speed_grid, extent=(lon_range.min(), lon_range.max(), lat_range.min(), lat_range.max()))
plt.colorbar()
plt.show()
完整的代码如下所示:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
data = pd.read_csv("data.csv")
lon_range = np.linspace(data["经度"].min(), data["经度"].max(), 100)
lat_range = np.linspace(data["纬度"].min(), data["纬度"].max(), 100)
lon_grid, lat_grid = np.meshgrid(lon_range, lat_range)
lon = data["经度"].values
lat = data["纬度"].values
wind_speed = data["风速大小"].values
wind_speed_grid = griddata((lon, lat), wind_speed, (lon_grid, lat_grid), method='cubic')
plt.imshow(wind_speed_grid, extent=(lon_range.min(), lon_range.max(), lat_range.min(), lat_range.max()))
plt.colorbar()
plt.show()
原文地址: http://www.cveoy.top/t/topic/bwYo 著作权归作者所有。请勿转载和采集!