matlab使用教程(78)—控制颜色图范围

1.控制颜色图范围

        对于您创建的许多类型的可视化图形,MATLAB® 默认将完整的数据范围映射到颜色图上。数据中的最小值映射到颜色图中的第一行,最大值映射到颜色图中的最后一行。所有中间值线性映射到颜色图的中间行。

        这种默认映射适用于大部分情况,但您也可以对选定的任意范围进行映射,即便您选择的范围不同于数据的范围也可以。通过选择不同的映射范围可以执行以下操作:

  • 查看有哪些数据刚好处于指定的范围边界或超出指定的范围。

  • 查看您的数据落在指定范围的哪个位置。

        假设曲面 Z = X + Y,其中 -10≤ x ≤10,-10≤ y ≤10。

[X,Y] = meshgrid(-10:10);
Z = X + Y;
s = surf(X,Y,Z);
xlabel('X');
ylabel('Y');
zlabel('Z = C');
colorbar

Surface plot of a 2-D plane in 3-D space using the default colormap. The colors vary with variations in Z.


        曲面绘图数据与颜色图的关系描述了控制此演示中颜色的属性。实质上,Surface 对象的 CData 属性包含一个数组 C,该数组将曲面上的每个网格点与颜色图中的一种颜色建立关联。默认情况下,C 等于 Z,其中 Z 是在网格点处包含 z = f(x,y) 值的数组。因此,这些颜色随 Z 的变化而变化。

        映射范围由 Axes 对象的 CLim 属性控制。此属性包含 [cmin cmax] 形式的二元素向量。cmin 的默认值等于 C 的最小值,cmax 的默认值等于 C 的最大值。在本例中,CLim 为 [-20 20],因为 C 的范围反映 Z 的范围。

Relationship between the values in matrix C, the values -20 and 20 in the CLim property, and the rows in the colormap

        将 CLim 更改为 [0 20] 会将 0 处以及其下的所有值统一映射为颜色图中的第一种颜色。

Relationship between the values in matrix C, the values 0 and 20 in the CLim property, and the rows in the colormap

        clim函数将 CLim 属性更改为 [0 20]。注意,曲面的下半部分映射到颜色图中的第一种颜色(深蓝色)。之所以进行这种裁剪,是因为 C(等于 Z)在这些点处的值小于或等于 0。

clim([0 20])

Surface plot of a 2-D plane in 3-D space using the default colormap. The colors vary with variations in Z, and half of the plane is colored dark blue.

        在 R2022a 之前: 使用 caxis([0 20]) 更改颜色图范围。

您也可以拓宽映射范围,以查看数据在范围中所处的位置。例如,将范围更改为 [-60 20] 将得到仅使用一半颜色的曲面。颜色图的下半部分对应于 C 范围之外的值,因此曲面上不呈现这些颜色。

clim([-60 20])

Surface plot of a 2-D plane in 3-D space using the default colormap. The colors vary with variations in Z. This plane uses a subset of colors from the colormap.

        在 R2022a 之前: 使用 caxis([-60 20]) 更改颜色图范围。

        注意

        您可以为曲面绘图、补片、图像或任何使用颜色图的图形对象设置 CLim 属性。但是,此属性仅影响 CDataMapping 属性设置为 'scaled' 的图形对象。如果 CDataMapping 属性设置为 'direct',则 C 索引的所有值将直接映射到颜色图,而不会进行任何缩放。C 的任何小于 1 的值将裁剪映射至颜色图中的第一种颜色。C 的任何大于颜色图长度的值则裁剪映射至颜色图中的最后一种颜色。

2.颜色图和真彩色之间的差异

        曲面、补片和图像等许多图形对象支持两种不同的指定颜色的方法:颜色图(使用索引颜色)和真彩色。每种方法涉及不同的工作流,对视觉表示有不同的影响。

2.1工作流差异

        颜色图是一个 m×3 数组,其中每一行指定一个 RGB 三元组。要在图形表示中使用颜色图,应为图形中的每个位置分配一个索引。每个索引对应颜色图中的一行,用以在图形中的指定位置显示一种颜色。相比之下,使用真彩色则是在图形中的每个位置指定一个 RGB 三元组。

        确定使用何种方法时要考虑的一些要点如下。

  • 真彩色更为直接。如果您想为图形中的特定位置分配具体的红色、绿色、蓝色值,使用真彩色通常更为容易。

  • 要在调色板区域中进行更改,则使用颜色图更为容易。例如,如果您想加亮从蓝色到绿色的渐变,则在颜色图中编辑这些行比在图形中的各个位置编辑颜色更为容易。

  • 您的数据格式可能更适合其中一个工作流。例如,许多 GIF 压缩图像使用索引颜色进行存储。

        这两种标记颜色的方法都是使用颜色数组 C 来指定颜色信息。C 的形状取决于图形对象的类型以及您选取的颜色标记方法。下表归纳了这些差异。

图形对象的类型包含颜色数组 C 的属性索引颜色 C 的形状真彩色 C 的形状
SurfaceCDataC 为 m×n 数组,其大小与 z 坐标数组相同。C(i,j) 处的值指定 Z(i,j) 的颜色图索引。C 为 m×n×3 数组,其中 C(:,:,i) 的大小与 z 坐标数组相同。

C(i,j,1) 指定 Z(i,j) 的红色分量。

C(i,j,2) 指定 Z(i,j) 的绿色分量。

C(i,j,3) 指定 Z(i,j) 的蓝色分量。
ImageCDataC 是 m×n 图像的一个 m×n 数组。C(i,j) 处的值指定像素 (i,j) 的颜色图索引。C 是 m×n 图像的一个 m×n×3 数组。

C(i,j,1) 指定像素 (i,j) 的红色分量。

C(i,j,2) 指定像素 (i,j) 的绿色分量。

C(i,j,3) 指定像素 (i,j) 的蓝色分量。
Patch (x, y, z)CData在标记补片面的颜色时,C 是 m 个补片面的一个 1×m 数组。C(i) 指定面 i 的颜色图索引。

在标记补片顶点的颜色时,C 是一个 m×n 数组,其中 m 为每个面的顶点数,n 为面数。C(i,j) 指定面 i 的顶点 j 的颜色图索引。
在标记补片面的颜色时,C 是 m 个补片面的一个 m×3 数组。C(i,:) 指定面 i 的红色、绿色和蓝色值。

在标记补片顶点的颜色时,C 是一个 n×3 数组,其中 n 为顶点总数。C(i,:) 指定顶点 i 的红色、绿色和蓝色值。
Patch(面-顶点数据)FaceVertexCData在标记补片面的颜色时,C 是 m 个补片面的 1×m 数组。C(i) 指定面 i 的颜色图索引。

在标记补片顶点的颜色时,C 为 1×n 数组,其中 n 为顶点总数。C(i) 指定顶点 i 的颜色图索引。
在标记补片面的颜色时,C 是 m 个补片面的一个 m×3 数组。C(i,:) 指定面 i 的红色、绿色和蓝色值。

在标记补片顶点的颜色时,C 是一个 n×3 数组,其中 n 为顶点总数。C(i,:) 指定顶点 i 的红色、绿色和蓝色值。

2.2视觉表示的差异

        颜色图提供由 m 种颜色组成的调色板,其中 m 为颜色图的长度。相比之下,真彩色则提供涵盖 256×256×256 ≈ 168 万种颜色的调色板。

        在确定调色板的大小时应考虑以下因素:

  • 用纯色填充大块区域时,最经济的方法是使用较小的调色板。它们在可视化曲面等高线时也很有用。

  • 较大的调色板显示细微过渡和平滑颜色梯度的效果更好。

        通过跨补片面的顶点进行颜色插值能够更明显地看出索引颜色和真彩色之间的差异。下面两个补片说明了一种极端情况。左侧的补片使用了小颜色图,而右侧的补片使用了真彩色。

Two triangular patches with interpolated color. One patch uses a 16-color colormap and the other patch uses truecolor. The transitions between colors are smoother in the patch that uses truecolor.

        如果您担心颜色图的调色板有限,可以向调色板中添加更多颜色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

auto关键字(C++11)

auto关键字(C11) 文章目录 auto关键字(C11)前言一、auto使用规则二、auto不适用的场景三、auto推荐适用的场景总结 前言 在C11中,auto关键字能够自动推导出变量的实际类型,可以帮助我们写出更加简洁、现代…

【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串

【LeetCode刷题】Day 7 题目1:209.长度最小的子数组思路分析:思路1:暴力枚举 O(N^2^)思路2:滑动窗口 O(N) 题目2:3. 无重复字符的最长子串题目分析:思想1:暴力枚举哈希表O(N^2^)思想2&#xff1…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的,而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制(尤其是2的幂相关的进制,因为这种计数系统比十进制更接近于计算机的二进制系统)&#xff0…

【图解IO与Netty系列】IO的同步与异步、阻塞与非阻塞,Linux五种IO模型

IO的同步与异步、阻塞与非阻塞,Linux五种IO模型 IO的同步与异步,阻塞与非阻塞阻塞IO与非阻塞IO同步IO与异步IO Linux五种IO模型BIONIOIO多路复用信号驱动IOAIO IO的同步与异步,阻塞与非阻塞 我们有时会看到类似于同步阻塞式IO、同步非阻塞式…

(避坑)SpringSecurity关于使用.antMatchers放行接口不生效问题

问题 在使用SpringSecurity的时候发现放行指定接口一直没有生效,使用"/**"就可以生效的问题 关于securityConfig的配置代码 Beanprotected SecurityFilterChain filterChain(HttpSecurity http) throws Exception {http.csrf().disable() // 关闭csrf防护…

博客开始使用 Cache Master 缓存插件

明月在给大家推荐 Cache Master 插件的时候(可参考【推荐个比较纯正的缓存插件——Cache Master】一文),仅仅是在其他站点上试用了一下,今天明月正式在博客上用上了 Cache Master,没有想到对 Dragon 主题的支持竟然是出…

RUST 和 GO 如何管理它们的内存

100编程书屋_孔夫子旧书网 Go 中的内存管理 Go 中的内存不会在缓存键被驱逐时立即释放。 相反,垃圾收集器会经常运行以发现任何没有引用的内存并释放它。 换句话说,内存会一直挂起,直到垃圾收集器可以评估它是否真正不再使用,而…

rtsp协议分析

rtsp概述 rtsp (real-time stream protocol)实时流媒体控制协议。RFC2326:这是RTSP的初始定义版本v1.0,由哥伦比亚大学、网景和RealNetworks公司提交给互联网工程任务组(IETF)作为RFC标准。RFC7826:这是RTSP的后续更新…

Java进阶学习笔记14——模板方法设计模式

面试和看源码。 谈到设计模式: 1、解决了什么问题? 2、怎么写? 模板方法设计模式解决了什么问题? 解决方法中存在重复代码的问题。 写法: 1)定义一个抽象类: 2)在里面定义两个方…

C# 控制台应用模板可生成顶级语句

C# 控制台应用模板可生成顶级语句 项目2024/01/0810 个参与者 反馈 本文内容 使用新的程序样式隐式 using 指令全局 using 指令使用旧程序样式 从 .NET 6 开始,新 C# 控制台应用的项目模板在 Program.cs 文件中生成以下代码: C#复制 // See https…

C++ prime 第五版 第14章 重载运算与类型转换

一、基本概念 重载的运算符是具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。 我们不能为内置类型的运算对象重定义运算符。对于一个运算符函数来说&…

某方protobuf闲谈

问题 当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码 观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了 protobuf的相关概念和原理,网上有很多教…

vulhub——Aria2、bash、catic

文章目录 一、Aria2 任意文件写入漏洞二、CVE-2014-6271(Bash Shell 漏洞)三、CVE-2022-46169(Cacti 前台命令注入漏洞) 一、Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级、多协议、多来源的下载工具(支持 HTTP…

docker-compose 搭建 单机版ELK

docker-compose 搭建 单机版ELK 前言 本次部署将使用ElasticSearch官方的镜像和Docker-Compose来创建单节点的ELK,用于学习ELK操作。在k8s集群内,如果每天的日志量超过20G以上,建议部署在k8s集群外部,以支持分布式集群的架构。在…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第26节-内嵌blender展厅

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第26节-内嵌blender展厅 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界…

网络编程的基础知识(适合新手)

网络编程 在Java中,网络编程是指使用Java语言进行网络通信的编程技术。这种技术使得位于不同地理位置的计算机能够通过网络进行通信,实现资源共享和信息传递。 一、定义 Java网络编程是Java语言在网络通信方面的应用,它利用Java提供的网络…

重开之数据结构(二刷)

引言: 由于前段时间学习效率不高,导致后面复习前面数据结构没有一个大纲,因此打算重新来学习以下数据结构,期望再次把数据结构学透,并有深刻的印象.并且记录每一次的学习记录 以便于后续复习 二分查找 需求:在有序数组arr内,查找target值 如果找到返回索引位置如果找不到返回…

c++(一)

c&#xff08;一&#xff09; C与C有什么区别命名空间使用 输入输出流引用指针和引用的区别定义拓展 函数重载例子测试函数重载原理 参数默认值什么是参数默认值注意 在c中如何引入c的库动态内存分配new、delete与malloc、free的区别&#xff1f; C与C有什么区别 <1>都是…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

【STM32】计算定时器的溢出

TIM2、3、4、5、12、13、14在APB1上&#xff0c;最大计数频率84M。 TIM1、8、9、10、11在APB2上&#xff0c;最大计数频率168M。 time(arr1)/(prescale1)/Tclk 算出来的是秒 下图使用TIM14 84MHz 那么time33600*25000/8400000010S&#xff0c;10S进入一次中断 中断方式开…