Matlab实现四种HSV色轮图绘制的示例代码

前言

有粉丝问我图(d)上的色盘图咋画:

明度(V)渐变版

注意,此处是为了还原论文中图片所以X加了。

% 生成网格
tList=linspace(0,2.*pi,300);
rList=linspace(0,1,100);
[theta,R]=meshgrid(tList,rList);

% 角度及半径转换为坐标
X=cos(theta+pi).*R;
Y=sin(theta).*R;
Z=zeros(size(X));

% 构造hsv网格并转换为rgb网格
hsvMesh=cat(3,theta./2./pi,ones(size(R)),R);
rgbMesh=hsv2rgb(hsvMesh);

% surf绘图
surf(X,Y,Z,'EdgeColor','none','CData',rgbMesh)
axis equal;axis([-1,1,-1,1]);
view(0,90);

饱和度(S)渐变版

% 生成网格
tList=linspace(0,2.*pi,300);
rList=linspace(0,1,100);
[theta,R]=meshgrid(tList,rList);

% 角度及半径转换为坐标
X=cos(theta).*R;
Y=sin(theta).*R;
Z=zeros(size(X));

% 构造hsv网格并转换为rgb网格
hsvMesh=cat(3,theta./2./pi,R,ones(size(R)));
rgbMesh=hsv2rgb(hsvMesh);

% surf绘图
surf(X,Y,Z,'EdgeColor','none','CData',rgbMesh)
axis equal;axis([-1,1,-1,1]);
view(0,90);

明度饱和度不变花瓣版

% 构造花瓣形状
t=(0:.1:(2.01/3*pi))+pi;
CX=cos(t)+1;
CY=sin(t);
[NCX,NCY]=rotateData(CX,CY,pi/6);
NCX=[NCX,NCX(end:-1:1)];
NCY=[NCY,-NCY(end:-1:1)];

% 循环绘图
hold on;
tt=linspace(0,2*pi,33);tt(end)=[];
for i=tt
    [tNCX,tNCY]=rotateData(NCX,NCY,i);
    fill(tNCX,tNCY,hsv2rgb([i/2/pi,1,1]),'FaceAlpha',0.2,...
        'LineWidth',1.5,'EdgeColor',[1,1,1],'EdgeAlpha',0.5)
end
axis equal;axis([-1.8,1.8,-1.8,1.8]);

% 数据旋转角度
function [X,Y]=rotateData(X,Y,theta)
    rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
    XY=rotateMat*[X;Y];
    X=XY(1,:);Y=XY(2,:);
end

HSV全空间

% 线性划分
h=linspace(0,2*pi,31);h=h(1:26);
s=linspace(0,1,9);
v=linspace(0,1,11);

% 绘制上面
hold on;
[H,S]=meshgrid(h,s);
surf(S.*cos(H),S.*sin(H),H-H+1,hsv2rgb(cat(3,H/2/pi,S,H-H+1)));
% 绘制侧面
[H,V]=meshgrid(h,v);
surf(V.*cos(H),V.*sin(H),V,hsv2rgb(cat(3,H/2/pi,H-H+1,V)));
% 绘制两个截面
[S,V]=meshgrid(s,v);
surf(S.*V.*cos(h(1)),S.*V.*sin(h(1)),V,hsv2rgb(cat(3,S-S+h(1)/2/pi,S,V)));
surf(S.*V.*cos(h(end)),S.*V.*sin(h(end)),V,hsv2rgb(cat(3,S-S+h(end)/2/pi,S,V)));

shading flat;view(60,45);axis off;
ax=gca;ax.Position=[-1/6,-2/6,1+2/6,1+2/6];

到此这篇关于Matlab实现四种HSV色轮图绘制的示例代码的文章就介绍到这了,更多相关Matlab HSV色轮图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Matlab绘制雨云图的方法详解

    目录 介绍 横向雨云图 纵向雨云图 介绍 写了俩代码模板,用来绘制横向云雨图与纵向云雨图,云雨图其实就是用把小提琴图拆开来的模板,想获取小提琴图绘制函数的可以看这里:基于Matlab绘制小提琴图的示例代码 后面的俩模板用的时候只需要换换数据,颜色及每一类名称即可,雨云图绘制效果如下: 横向雨云图 function rainCloudsTMPL1 % @author: slandarer % 在这里放入你的数据============================================

  • 利用Matlab绘制有趣图像的示例代码

    目录 1.随机樱花树 2.苹果绘制 3.南瓜绘制 4.一堆三角形绘制 5.月饼绘制 6.大钻石绘制 7.有趣曲线1 8.有趣曲线2 9.有趣曲线3——蝴蝶曲线 10.有趣曲线4——心形曲线 11.有趣曲线5 12.会害羞的含羞草 13.随机雪景 1.随机樱花树 function sakura % @author:slandarer % 随机形状二叉树樱花树绘制 hold on,axis equal axis(0.5+[-10,50,0,50]) set(gca,'xtick',[],'ytick

  • 利用Matlab实现图像亮度分布统计图

    写了一个输入图片,便会生成美观的图像各通道亮度分布图的函数,大概效果如下: 老样子,工具函数放在最前面,之后会介绍咋用这个函数: 工具函数 function HistogramPic(pic) FreqNum=zeros(size(pic,3),256); for i=1:size(pic,3) for j=0:255 FreqNum(i,j+1)=sum(sum(pic(:,:,i)==j)); end end ax=gca;hold(ax,'on');box on;grid on if si

  • 基于Matlab实现离散系统分岔图的绘制

    目录 1.一维离散分岔图 2.二维离散分岔图 3.封面图绘制 1.一维离散分岔图 一维那非常简单哈,就循环着画呗,以下举两个简单的例子 : % x(n+1)=1-r*x(n)^2 % (r∈(0,2),x∈[-1,1])的分支混沌图. hold on f=@(x,r)1-r.*x.^2; r=0:.01:2; x=0; % x初值 for n=1:1000 x=f(x,r); if n>100 % 稳定后开始绘图 plot(r,x,'k.','MarkerSize',1); drawnow en

  • 基于Matlab实现山脊图的绘制

    目录 纯色山脊图模板 渐变色山脊图模板 写了一个用于绘制山脊图的模板,仅需要往需要填写数据的区域填入数据点击运行即可,以下提供两款模板,第一款为纯色模板而第二款为渐变色模板: 纯色山脊图模板 模板代码: function ridgeMapTMPL1 % @author: slandarer % 在这里放入你的数据======================================================= X1=normrnd(2,2,1,1000); X2=[normrnd(4

  • 详解Matlab如何绘制桑基图

    目录 详细用法 1使用示例 2输入参数 3输出 函数完整代码 使用示例代码 这次主要是分享自己写的一个函数,用来绘制桑基图,效果大概是下面这样子: 先说明函数(sankey2)怎么用,函数完整代码放在博客最后 详细用法 1 使用示例 新建一个m文件,运行如下代码 List={'a1',1,'A'; 'a2',1,'A'; 'a3',1,'A'; 'a3',0.5,'C'; 'b1',1,'B'; 'b2',1,'B'; 'b3',1,'B'; 'c1',1,'C'; 'c2',1,'C'; 'c

  • Matlab实现四种HSV色轮图绘制的示例代码

    前言 有粉丝问我图(d)上的色盘图咋画: 明度(V)渐变版 注意,此处是为了还原论文中图片所以X加了. % 生成网格 tList=linspace(0,2.*pi,300); rList=linspace(0,1,100); [theta,R]=meshgrid(tList,rList); % 角度及半径转换为坐标 X=cos(theta+pi).*R; Y=sin(theta).*R; Z=zeros(size(X)); % 构造hsv网格并转换为rgb网格 hsvMesh=cat(3,the

  • Matlab实现三维投影绘制的示例代码

    目录 使用方法 三维曲面投影 三维曲线投影 三维参数曲线投影 三维参数曲面投影 混合类型三维绘图投影 工具函数完整代码 本期带来一个三维投影绘制函数(三视图绘制),函数支持三维曲线.曲面.三维多边形.参数方程曲线.参数方程曲面的投影绘制,以下先给出代码使用方式,文末给出工具函数完整代码: 使用方法 三维多边形投影及基本使用 通过介绍如何生成三维多边形投影介绍一下函数咋用,这里的三维多边形指的是使用patch或fill3创建的图形,假设我们绘制了如下一个复杂多边形构成的球: c = 1; d = 

  • Python搭建Gitee图床的示例代码

    目录 摘要 新建仓库 克隆仓库 获取TinyPng的"API Key" 安装需要的Python包 编写Python脚本 测试功能 摘要 在写博客的过程中经常要插入图片,许多博客平台提供了图片上传的服务,但是不能保证长期有效,不同平台还不能通用,所以要通过搭建统一的图床来实现.有用服务器作为图床和第三方图床,前者限制多,需要备案,后者不是很可靠,而用代码托管平台做图床,既稳定可靠没有很大限制,而且数据实现同步,即使云端的数据丢失了,本地还有备份,而在中国,为了提升访问速度,我们并不选取G

  • Matlab实现统计集合中各元素出现次数的示例代码

    目录 前言 工具函数类 使用方式 统计数字 统计单词.名称 统计字符 完整代码 前言 统计数组中各个元素数量是一个很常用的功能,但我试着用了MATLAB中自带的统计函数 tabulate: 但是发现了两个问题: 当元素中英文混杂时: X = {'slandarer';'slandarer';'hikari';'hikari';'公众号';'公众号'; 'CSDN';'CSDN';'CSDN'}; tabulate(X) 我们发现中英文混杂时输出会对不齐: 当元素为纯整数数值时: X=[6,5,6

  • C#实现图片轮播功能的示例代码

    目录 实践过程 效果 代码 实践过程 效果 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public bool Pflag; int flag = 0; FileSystemInfo[] fsinfo; ArrayList al = new ArrayList(); int MM = 0; private void splitContainer2_Panel2_Paint(obj

  • Android中AlertDialog四种对话框的最科学编写用法(实例代码)

    首先我们上图: xml的代码如下,用于编写按钮: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match

  • 使用React实现轮播效果组件示例代码

    前言 我发现React和AngularJS思想完全不同,AngularJS是基于双向绑定,在Modal层中定制数据,然后双向改变.但是React是通过prop和state来改变view层的状态.下面是我写的一个轮播图组件,可以直接看一下.代码很简单.原理就是通过React在componentDidMount后改变setState,来动态改变css样式. 说明以下:看gif很卡,但是实际效果还是很好的. 以下是示例代码 LunBo.js require('styles/App.css'); req

  • uniapp vue与nvue轮播图之轮播图组件的示例代码

    vue部分如下: <template> <view class=""> <!-- 轮播图组件 --> <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" circular=""> <block v-for="(it

  • VUE开发一个图片轮播的组件示例代码

    本人刚学习vue,用vue做了个图片轮播,下面我来记录一下,有需要了解VUE开发一个图片轮播的组件的朋友可参考.希望此文章对各位有所帮助. 完成效果图如下: vue开发的思路主要是数据绑定,代码如下: <template> <div ref="root" style="user-select: none;-webkit-user-select: none;overflow: hidden"> <div class="slide

  • Android首页无限轮播功能的示例代码

    最近工作不是很忙,也跟大神学习下总结一些小的技术点: 对于一个App几乎都有Banner广告功能,也就是我们常见的轮播图,当然目前市场第三方框架已经非常成熟了,尤其是youth5201314/banner这里有github地址也可以学习下:https://github.com/youth5201314/banner.git 那么下面给大家介绍我的一些总结: 首先分析下轮播图的设计 多张轮播图定时效果 指示点以及每张图片的文字说明 实现无限轮播,可滑动,图片点击事件 开始布局: <Relative

随机推荐