Я немного изучил это и обнаружил, что файл построения графика GeoPandas (v0.14.4) сначала создает список, значения — нан:
Код: Выделить всё
nan_idx = np.asarray(pd.isna(values), dtype="bool")
Код: Выделить всё
values = cat.codes[~nan_idx]
Код: Выделить всё
for n in np.where(nan_idx)[0]:
values = np.insert(values, n, values[0])
Может ли кто-нибудь сказать мне, есть ли другой способ построения столбцов, содержащих все значения nan, или эта проблема была разработана в более новых версиях GeoPandas? Важно показать, что все значения являются «пропущенными значениями», поскольку это просто покажет, что этот конкретный столбец невозможен.
Весь приведенный выше код находится в файле geopandas/plotting. py для GeoPandas (v0.14.4) и происходит внутри функцииplot() в фрагменте моего кода ниже (где name — это имя столбца, а шестиугольники относятся к Geopandas df):
Код: Выделить всё
import geopandas as gpd
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
def plot_and_save(crs, name, legend_kwds, output_folder, figsize=(10,5), legend=True, cmap='viridis_r',
missing_kwds={"color": "lightgrey", "label": "Missing values",},
bbox_inches="tight",
):
fig = plt.figure(figsize=figsize)
ax = plt.axes(projection=crs)
ax.set_axis_off()
hexagons.to_crs(crs.proj4_init).plot(
ax=ax,
column = name,
legend = legend,
cmap = cmap,
legend_kwds = legend_kwds,
missing_kwds = missing_kwds,
)
ax.set_title(name)
fig.savefig(output_folder + f"/{name}.png", bbox_inches=bbox_inches)
plt.close()
hexagons = gpd.read_file("results/hexfile.geojson")
hexagon_bounds = hexagons.geometry.bounds
min_lon, min_lat = hexagon_bounds[['minx','miny']].min()
max_lon, max_lat = hexagon_bounds[['maxx','maxy']].max()
central_lon = (min_lon + max_lon)/2
central_lat = (min_lat + max_lat)/2
crs = ccrs.Orthographic(central_longitude = central_lon, central_latitude= central_lat)
output_folder = 'plots/results'
plot_and_save(crs, 'pipeline transport costs', {'label':'pipeline cost [euros/kg]'}, output_folder)
[img]https://i.sstatic.net /AwXE6l8J.png[/img]
И вот график, который имеет только одно значение, я бы хотел, чтобы график был полностью выделен серым цветом:

Подробнее здесь: https://stackoverflow.com/questions/792 ... nan-values
Мобильная версия