Я создал карту снегопада, которую хотел, с заданными интервалами, но последний цвет в моей цветовой карте с использованием расширения = 'max' совпадает с предпоследним цветом. Я хочу, чтобы последний цвет в моем графике/карте цветов соответствовал последнему цвету моей карты цветов, а не предпоследнему цвету.
Я попробовал метод vmax и функцию cmap.set_over, но безуспешно. Что мне делать?
from datetime import datetime
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import xarray as xr
import numpy as np
import metpy.calc as mpcalc
import netCDF4
from netCDF4 import Dataset
from metpy.units import units
from scipy.ndimage import gaussian_filter
import scipy.ndimage as ndimage
import matplotlib.colors as mcolors
from metpy.plots import USCOUNTIES
snowdata = xr.open_dataset('sfav2_CONUS_48h_2025010612.nc')
lat = snowdata['lat'][:].squeeze()
lon = snowdata['lon'][:].squeeze()
snow = snowdata['Data'][:].squeeze()
lon_2d, lat_2d = np.meshgrid(lon, lat)
snowm = gaussian_filter(snow, sigma=3.0)
snowin = snowm*39.37
nws_snowfall_colors = [
"#ffffff",# 0 inches (white)
"#daeef5",
"#bdd7e7", # 0.1 inches
"#6baed6", # 1 inch
"#3182bd", # 1-2 inches
"#08519c", # 2-3 inches
"#082694", # 3-4 inches
"#ffff96", # 6-8 inches
"#ffc400", # 8-12 inches
"#ff8700", # 12-18 inches
"#db1400", # 18-24 inches
"#9e0000", # 24-30 inches
"#690000", # 30-36 inches
"#360000", # > 36 inches
]
# Define the corresponding snowfall values (in inches)
nws_snowfall_cmap = mcolors.ListedColormap(nws_snowfall_colors)
nws_snowfall_cmap
clev_snowfall = np.concatenate((np.arange(0, .1, .1), np.arange(.1, 1, .9), np.arange(1, 4, 1), np.arange(4, 8, 2), np.arange(8,12,4), np.arange(12,42,6)))
norm = mcolors.BoundaryNorm(clev_snowfall, 14)
nws_snowfall_cmap.set_over("#360000")
datacrs = ccrs.PlateCarree()
plotcrs = ccrs.LambertConformal(central_latitude=35, central_longitude=-100,standard_parallels=(30, 60))
bounds = ([-110, -85, 33, 43])
fig = plt.figure(figsize=(14,12))
ax = fig.add_subplot(1,1,1, projection=plotcrs)
ax.set_extent(bounds, crs=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidth = 0.75)
ax.add_feature(cfeature.STATES, linewidth = 2)
ax.add_feature(USCOUNTIES, edgecolor='black', linewidth = 1)
cf = ax.contourf(lon_2d, lat_2d, snowin, clev_snowfall, cmap = nws_snowfall_cmap, norm=norm, vmin = 0, vmax=42.0, extend='max', transform=datacrs)
cb = plt.colorbar(cf, orientation='horizontal', ticks = [0, .1, 1, 2, 3, 4, 6, 8, 12, 18, 24, 30, 36])
Подробнее здесь: https://stackoverflow.com/questions/793 ... wfall-plot
Использование расширения цветовой карты на графике общего снегопада ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение