python - 如何在 Python 中标准化颜色条?
问题描述
我想将 colobar 比例从我当前的图1调整到所需的图2!
我的颜色条比例范围是 -1 到 1,但我希望它以指数形式出现,为此我也尝试了 levels = np.linspace(-100e-2,100e-2) ,但它也没有给出所需的比例2
import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
ds = xr.open_dataset('PL_Era_Tkt.nc')
wp = ds.w.mean(dim=['longitude','latitude']).plot.contourf(x='time',cmap='RdBu',add_colorbar=False,extend='both')
wpcb = plt.colorbar(wp)
wpcb.set_label(label='Pa.s${^{-1}}$',size=13)
plt.gca().invert_yaxis()
plt.title('Vertical Velocity',size=15)
我目前的规模
我想要的规模
解决方案
由于未显示数据,因此我在此处添加了带有来自图表示例的数据的标准化彩条。我认为使用此设置,彩条刻度也将采用日志格式。请注意,使用的数据并不大,因此我无法确认这一点。
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.ticker as ticker
import numpy as np
plt.style.use('seaborn-white')
def f(x, y):
return np.sin(x) ** 10 + np.cos(10 + y * x) * np.cos(x)
x = np.linspace(0, 5, 50)
y = np.linspace(0, 5, 40)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig, ax = plt.subplots()
ax.contourf(X, Y, Z, 20, cmap='RdGy')
cmap = mpl.cm.RdGy
norm = mpl.colors.Normalize(vmin=-1, vmax=1.0)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),
ax=ax, orientation='vertical', label='Some Units', extend='both', ticks=ticker.LogLocator())
plt.show()
推荐阅读
- php - 如何在 laravel 中扩展 JoinClause 类
- react-native - 选中复选框时反应本机文本组件移动
- mysql - Play Framework slick 停止数据库操作而不会出错
- reactjs - 在 TypeScript 中,何时使用 <> 以及何时使用 :
- java - 启动服务并引用对象
- python - Tensorflow 服务错误:“数据丢失:无法将 saved_model.pb 解析为二进制原型”
- django - 使用drf-yasg,如何提供图案?
- mysql - 搜索引擎和带重音的单词不匹配
- javascript - AJAX 请求工作正常,但是当我单击按钮内的图标时,我收到 500 内部服务器错误
- ruby - 您可以在大于语句中使用“包含”吗?