Hi I have created a gridded data in an interpolation which looks like this.
Unnamed: 0 Latitude Longitude Value
0 0 -180.0 -65.079444 -6.983734
1 1 -179.0 -65.079444 -6.980051
2 2 -178.0 -65.079444 -6.976613
3 3 -177.0 -65.079444 -6.973421
4 4 -176.0 -65.079444 -6.970478
Now I would like to plot this data easily in Basemap and display the values with contourf.
My code looks like this:
from traceback import print_tb
import numpy as np
from pykrige.ok import OrdinaryKriging
from pykrige.kriging_tools import write_asc_grid
import pykrige.kriging_tools as kt
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Path, PathPatch
import pandas as pd
def load_data():
df = pd.read_csv(r"File", sep=',')
return(df)
def get_data(df):
return {
"lons": df['Longitude'],
"lats": df['Latitude'],
"values": df['Value'],
}
def generate_grid(data, basemap):
grid = {
'lon': data['lons'],
'lat': data['lats'],
}
grid["x"], grid["y"] = np.meshgrid(grid["lon"], grid["lat"])
grid["x"], grid["y"] = basemap(grid["x"], grid["y"])
return grid
def prepare_map_plot():
figure, axes = plt.subplots(figsize=(10,10))
basemap = Basemap(projection='robin', lon_0=0, lat_0=0, resolution='h',area_thresh=1000,ax=axes)
basemap.drawcoastlines()
basemap.drawparallels(np.arange(-90.,120.,30.))
basemap.drawmeridians(np.arange(0.,420.,60.))
return figure, axes, basemap
def plot_mesh_data(data, grid, basemap):
colormesh = basemap.contourf(grid["x"], grid["y"], data['values'],32, cmap='RdBu_r')
color_bar = basemap.colorbar(colormesh,location='bottom',pad="10%")
df = load_data()
base_data = get_data(df)
figure, axes, basemap = prepare_map_plot()
grid = generate_grid(base_data, basemap)
plot_mesh_data(base_data, grid, basemap)
plt.show()
However, I keep getting the error message:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
So how can I make the plot better? Or is my Idea wrong?