IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> python ---关于colormappolormeshcolorbar -> 正文阅读

[游戏开发]python ---关于colormappolormeshcolorbar

1、归一化:归一化后的值可以直接传给 colormap,以得到画图用的颜色

Normalize:各种二维绘图函数在进行归一化时都默认使用 Normalize 类。给定参数 vmin 和 vmax,它会按照线性关系,将原始数据 x 映射为 y。

LogNorm:LogNorm 能将 [vmin, vmax] 范围内的 x 的对数线性映射到 [0.0, 1.0] 上
BoundaryNorm:
参数 boundaries 为我们给出的这些 bin 的边缘数值,要求单调递增;
ncolors 则是我们希望与之对应的 colormap 中颜色的数目(即 cmap.N)

2、选colormap的映射值
这里暂时选取jet值,后续讲解如何自己制作colormap

# 生成测试数据.
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
X, Y = np.meshgrid(x, y)
Z = 1E3 * np.exp(-(np.abs(X - 5)**2 + np.abs(Y - 5)**2))

#首先绘制一个画布
fig ,ax = plt.subplots(figsize=(8,6))

#第二步:
# 选择归一化:
# 第一种,默认是线性,可以直接在pcolormesh中设置vmin,vmax
# 第二种,设置成为对数映射,norm = colors.LogNorm(vmin=1E-3, vmax=1E3),注意,若在pcolormesh中给定了norm,就不能再指定vmin和vmax了.
# 第三种:设置成为BoundaryNorm,需给出两个参数,


# 选择colormap

cmap = cm.jet

#第三步:
#pocormesh:创建具有非规则矩形网格的伪彩色图
im = ax.pcolormesh(Z,cmap=cmap)

#第四步:
#colorbar:显示色阶的颜色栏
fig.colorbar(im)

plt.show()


效果图如下:

在这里插入图片描述

三种归一化结果如下:

# 生成测试数据.
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
X, Y = np.meshgrid(x, y)
Z = 1E3 * np.exp(-(np.abs(X - 5)**2 + np.abs(Y - 5)**2))

#首先绘制一个画布
fig ,axs = plt.subplots(2,2,figsize=(8,8))

cmap = cm.jet
im = axs[0,0].pcolormesh(Z,cmap=cmap)
axs[0,0].set_title('线性映射')
fig.colorbar(im)


norm_L = colors.LogNorm(vmin=1E-3,vmax=1E3)
im1 = axs[0,1].pcolormesh(Z,cmap=cmap,norm=norm_L)
fig.colorbar(im1)
# fig.colorbar(im1,ax=axs[0,1])

axs[0,1].set_title('对数映射')


bounds = [1,20,40,50,60,70,70,90,100]
nbins = len(bounds) -1
norm_B = colors.BoundaryNorm(boundaries=bounds,ncolors=cmap.N)
#norm_B = colors.BoundaryNorm(boundaries=bounds,ncolors=nbins)#注意,本来这里应该为cmap.N,但cmap不是离散取值
im2 =axs[1,0].pcolormesh(Z,cmap=cmap,norm=norm_B)
fig.colorbar(im2)
axs[1,0].set_title('bound映射')



结果如下:
在这里插入图片描述
注意看:
这里的颜色条没有一一对齐,问题出现在colorbar的ax参数,
因为colorbar也相当于一个轴,只需要在对应的colorbar 添加这样ax参数就可以了:fig.colorbar(im2,ax=axs[1,0])

结果如下:
在这里插入图片描述

3、colormap 有两个子类:一个是Listedcolormap
一个是Linearsegmentcolormap

之前直接
cmap = cm.jet。采用的是颜色库里面有的,相应的还有’viridis’, ‘plasma’, ‘inferno’, ‘magma’, 'cividis’等,具体的见官网;

网址:
色彩介绍–官网matplotlib

而Listedcolormap无colors属性,不能直接列出这N个颜色的RGB值,需要利用十六进制或者rgb值来创建一个list的colormap

如下;

cmap = ['#F8F8FF','#FFC0CB','#DC143C',\
        '#0000CD','#DB7093','#FF69B4',\
        '#FF1493','#C71585','#DA70D6']

cmap_L = colors.ListedColormap(cmap)
bounds = [1,20,40,50,60,70,70,90,100]
# nbins = len(bounds) -1
norm_B = colors.BoundaryNorm(boundaries=bounds,ncolors=cmap_L.N)
#norm_B = colors.BoundaryNorm(boundaries=bounds,ncolors=nbins)#注意,本来这里应该为cmap.N,但cmap不是离散取值
im2 =axs.pcolormesh(Z,cmap=cmap_L,norm=norm_B)
fig.colorbar(im2,ax=axs)
axs.set_title('bound映射')

结果如下:
在这里插入图片描述

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:41:42  更:2021-09-14 13:42:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 20:16:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码