最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Matplotlib contourf contour畫(huà)圖實(shí)例(包含高斯濾波)

2023-03-15 12:43 作者:豬寶豬寶精神好好  | 我要投稿

????最近被要求復(fù)現(xiàn)圖片

要求做到海面區(qū)域,完全一致。因?yàn)閷?duì)于matplotlib使用不夠熟練導(dǎo)致我在復(fù)現(xiàn)過(guò)程中遇到了好幾個(gè)問(wèn)題。

  • 使用地圖投影并不能達(dá)到圖片所示效果

????無(wú)論我使用使用地圖投影,或者使用PlateCarree還是Lambert投影,都不能達(dá)到圖片中的效果,最后我使用了PlateCarree投影,并在圖片生成后對(duì)圖片進(jìn)行拉伸,才接近圖片效果。

  • colorbar不能完全復(fù)現(xiàn)

????我用了matplotlib自帶的colormap但是不能達(dá)到圖片效果,我也想過(guò)用matplotlib自帶的生成漸變colormap的函數(shù),但是效果也很差,最后我想了一個(gè)笨辦法,就是一個(gè)一個(gè)顏色地讀取然后自己創(chuàng)建一個(gè)色卡,我用到了蘋(píng)果自帶的功能,應(yīng)該很多軟件都有類(lèi)似功能。使用讀取出來(lái)的sRGB即可。

然后就解決了色卡的問(wèn)題

  • contour曲線過(guò)于粗糙

????我也嘗試了很多方法,比如說(shuō)每隔4個(gè)點(diǎn)讀取數(shù)據(jù),或者用線性插值等插值方法,將數(shù)據(jù)插值到更大的網(wǎng)格上去,但是收效甚微,最后發(fā)現(xiàn)可以使用高斯濾波的函數(shù)。下面直接放上成果圖,因?yàn)槲也粫?huì)ps所以圖片還是相差很多,如果有兄弟有更好的完善方法,可以dd我。

濾波函數(shù)使用方法:

from scipy.ndimage.filters import gaussian_filter

Arr_z = gaussian_filter(Arr_z, 1) ?# 高斯濾波

這是具體的高斯濾波:(21條消息) gaussian_filter( )函數(shù)(高斯濾波)_方如一的博客-CSDN博客

https://blog.csdn.net/Fwuyi/article/details/123585403

我把代碼放在最后,import中可能很多都沒(méi)有調(diào)用到,是我之前放的,懶得改了。

# 數(shù)據(jù)處理部分

import numpy as np

from numpy.linalg import solve # ?用來(lái)解方程

import pandas as pd

import xarray as xr

import datetime as dt

import scipy

from scipy.io import loadmat ?# 讀取m文件

from scipy.stats import linregress ?# 進(jìn)行回歸分析

from sklearn import linear_model

clf = linear_model.LinearRegression()

# import cfgrib

from scipy.optimize import curve_fit

from eofs.standard import Eof

import datetime as dt

import matplotlib.pyplot as plt

import cartopy.crs as ccrs

import cartopy.feature as cfeature

from matplotlib import colors

import matplotlib as mpl

import matplotlib.patches as mpatchesimport

import matplotlib.transforms as mtransformsdef

plt.rcParams['axes.unicode_minus'] =False ?# 打開(kāi)負(fù)號(hào)

plt.rcParams['font.sans-serif'] = 'SimHei' ?# 顯示中文

import cartopy.mpl.ticker as cticker

import scipy.ndimage

from scipy.ndimage.filters import gaussian_filter


#數(shù)據(jù)處理部分

dataset = xr.open_dataset('ETOPO_2022_v1_60s_N90W180_bed.nc')

print(dataset)

print()

z = dataset.z.loc[36.27:42.3, 117.11:122.46][::4, ::4]

print(z.lon.shape, z.lat.shape)

print(np.array(z.lon.shape)[0])


lon = np.array(z.lon).reshape(np.array(z.lon.shape)[0], 1)

lat = np.array(z.lat).reshape(np.array(z.lat.shape)[0], 1)

Arr_z = np.array(z)

# Arr_z = gaussian_filter(Arr_z, 1) ?# 高斯濾波

print(Arr_z.shape, lon.shape, lat.shape)

lon, lat = np.meshgrid(lon, lat)

print(Arr_z.min(), Arr_z.max())

#畫(huà)圖部分

plt.rcParams['font.sans-serif'] = 'SimHei'

plt.rcParams['axes.unicode_minus'] =False ?# 打開(kāi)負(fù)號(hào)

? # 創(chuàng)建色卡

# plt.rcParams.update({'figure.dpi':150})


proj = ccrs.PlateCarree(central_longitude=0)

fig = plt.figure(figsize=(14.56, 18.74))


axes = fig.add_axes([0, 0, 1, 1], projection=proj)

axes.add_feature(cfeature.COASTLINE, zorder=2, linewidth=1.5)

axes.add_feature(cfeature.LAND, zorder=1)

leftlon, rightlon, lowerlat, upperlat = (117.11,122.46,36.27,42.3)

img_extent = [leftlon, rightlon, lowerlat, upperlat]

? # 自定義色卡

cmap = mpl.cm.Blues_r

cmap1 = mpl.colors.ListedColormap(['#040A47', '#02165F', '#001651', '#042B61', '#063C88', '#1B76D7', '#207DD3', '#33ABED', '#4FBAF1', '#5EBEEB', '#81CEEA', '#97D5E9'])

bounds = [-65, -60, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, 0]

#040A47 02165F 001651 042B61 063C88 1B76D7 207DD3 33ABED 4FBAF1 5EBEEB 81CEEA 97D5E9

red_color_normal = mpl.colors.LinearSegmentedColormap.from_list('自定義的顏色名字', [(0, ? ?'#04023D'),(1, ? ?'#96CEE3')], N=256) ?# 顏色漸變

norm = mpl.colors.BoundaryNorm(bounds, cmap1.N) ?# 自定義色卡的歸一化


vmax = 0

vmin = -60


axes.contourf(lon, lat, Arr_z, norm=norm,zorder=0, cmap=cmap1, levels=bounds, extend='both')

contour = axes.contour(lon, lat, Arr_z, zorder=0, colors='#95D6F9', linestyles="-", levels=bounds, extend='none')


plt.axis('off')




Matplotlib contourf contour畫(huà)圖實(shí)例(包含高斯濾波)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
沙湾县| 石家庄市| 子洲县| 临西县| 镇原县| 托里县| 简阳市| 陇川县| 拜城县| 武夷山市| 定日县| 全州县| 咸阳市| 金昌市| 林西县| 台北县| 陵水| 浦东新区| 鄢陵县| 洛南县| 容城县| 襄樊市| 无锡市| 龙南县| 锡林郭勒盟| 胶州市| 疏勒县| 叶城县| 合山市| 阳山县| 武宁县| 罗源县| 白沙| 射阳县| 濮阳县| 资兴市| 平原县| 昌邑市| 闽清县| 灵璧县| 杨浦区|