MATLAB

您所在的位置:网站首页 matlab怎么设置标签字体大小 MATLAB

MATLAB

#MATLAB | 来源: 网络整理| 查看: 265

这是一篇有关数值矩阵、颜色矩阵、颜色列表的技巧整合,会以随笔的形式想到哪写到哪,可能思绪会比较飘逸请大家见谅,本文大体分为以下几个部分:

数值矩阵用颜色显示从颜色矩阵提取颜色从颜色矩阵中提取数据颜色列表相关函数颜色测试图表的识别

数值矩阵用颜色显示 heatmap

我们最常用的肯定就是heatmap函数显示数值矩阵:

X=rand(10); heatmap(X);

字体颜色可设置为透明:

X=rand(10); HM=heatmap(X); HM.CellLabelColor='none';

如果由NaN值,会显示为黑色:

X=rand(10); X([3,4,15])=nan; HM=heatmap(X); HM.CellLabelColor='none';

这个颜色也可以改,比如改成浅灰色:

X=rand(10); X([3,4,15])=nan; HM=heatmap(X); HM.CellLabelColor='none'; HM.MissingDataColor=[.8,.8,.8];

imagesc

imagesc随便加个colorbar就和heatmap非常像了,而且比较容易进行图像组合(heatmap的父类不能是axes),但是没有边缘:

X=rand(10); imagesc(X) colormap(winter) colorbar

比较烦的是imagesc即使数据有NaN也会对其进行插值显示,好坏参半吧。

另外随便写了点代码发现MATLAB自带的幻方绘制挺有规律的hiahiahia:

for i=1:16 ax=subplot(4,4,i); hold on;axis tight off equal X=magic(3+i); imagesc(X); end

image

image函数单通道时也可以设置colormap来进行颜色映射:

load spine image(X) colormap(map)

pcolor

pcolor由于每个方块颜色都会使用左上角的数值来计算,因此会缺一行一列,我们可以补上一行一列nan:

X=rand(6); X(end+1,:)=nan; X(:,end+1)=nan; pcolor(X); colormap(winter) colorbar

可修饰的东西就比较丰富了,比如边缘颜色:

X=rand(6); X(end+1,:)=nan; X(:,end+1)=nan; pHdl=pcolor(X); pHdl.EdgeColor=[1,1,1]; pHdl.LineWidth=2; colormap(winter) colorbar

气泡图

气泡图大概也能冒充一下热图:

Z=rand(7); [X,Y]=meshgrid(1:size(Z,2),1:size(Z,1)); bubblechart(X(:),Y(:),Z(:),Z(:),'MarkerFaceAlpha',.6) colormap(parula) colorbar set(gca,'XTick',1:size(Z,2),'YTick',1:size(Z,1),'LineWidth',1,... 'XGrid','on','YGrid','on','FontName','Cambria','FontSize',13)

随便写着玩

虽然surf函数调整视角也像是热图的样子,但是不打算讲了,反而等高线填充图虽然不像热图但是很有意思,感觉可以当作colormap展示的示例图:

X=rand(10); CF=contourf(X); colormap(winter) colorbar

从颜色矩阵提取颜色 像素提取器

需要安装: Image Processing Toolbox 图像处理工具箱.

使用以下代码可以显示每个像素RGB值:

imshow('peppers.png') impixelregion

图片颜色统计小函数

我写过一个RGB颜色统计图绘制函数:

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 size(FreqNum,1)==3 bar(0:255,FreqNum(1,:),'FaceColor',[0.6350 0.0780 0.1840],'FaceAlpha',0.5); bar(0:255,FreqNum(2,:),'FaceColor',[0.2400 0.5300 0.0900],'FaceAlpha',0.5); bar(0:255,FreqNum(3,:),'FaceColor',[0 0.4470 0.7410],'FaceAlpha',0.5); ax.XLabel.String='RGB brightness'; rrange=[num2str(min(pic(:,:,1),[],[1,2])),' , ',num2str(max(pic(:,:,1),[],[1,2]))]; grange=[num2str(min(pic(:,:,2),[],[1,2])),' , ',num2str(max(pic(:,:,2),[],[1,2]))]; brange=[num2str(min(pic(:,:,3),[],[1,2])),' , ',num2str(max(pic(:,:,3),[],[1,2]))]; legend({['R: range[',rrange,']'],['G: range[',grange,']'],['B: range[',brange,']']},... 'Location','northwest','Color',[0.9412 0.9412 0.9412],... 'FontName','Cambria','LineWidth',0.8,'FontSize',11); else bar(0:255,FreqNum(1,:),'FaceColor',[0.50 0.50 0.50],'FaceAlpha',0.5); ax.XLabel.String='Gray scale'; krange=[num2str(min(pic(:,:,1),[],[1,2])),' , ',num2str(max(pic(:,:,1),[],[1,2]))]; legend(['Gray: range[',krange,']'],... 'Location','northwest','Color',[0.9412 0.9412 0.9412],... 'FontName','Cambria','LineWidth',0.8,'FontSize',11); end ax.LineWidth=1; ax.GridLineStyle='--'; ax.XLim=[-5 255]; ax.XTick=[0:45:255,255]; ax.YLabel.String='Frequency number'; ax.FontName='Cambria'; ax.FontSize=13; end

非常简单的使用方法,就是读取图片后调用函数即可:

pic=imread('test.png'); HistogramPic(pic)

若图像为灰度图则效果如下:

色卡生成器

从图片中提取主要颜色:https://mp.weixin.qq.com/s/Pj6t0SMDBAjQi3ecj6KVaA

颜色提取器

推荐两款颜色提取器,一款免费一款付费:

免费版:https://mp.weixin.qq.com/s/uIyvqQa9Vnz7gYLgd7lUtg

付费版:https://mp.weixin.qq.com/s/BpegP7CpOQERwrUXHexsGQ

从颜色矩阵中提取数据

之前写过一列把热图变为数值矩阵的函数,可以去瞅一眼:https://mp.weixin.qq.com/s/wzqCCFF2yvC80-ruqMKOpQ

颜色列表相关函数 颜色方块展示函数

写了个用来显示颜色的小函数:

function colorSwatches(C,sz) ax=gca;hold on; ax.YDir='reverse'; ax.XColor='none'; ax.YColor='none'; ax.DataAspectRatio=[1,1,1]; for i=1:sz(1) for j=1:sz(2) if j+(i-1)*sz(2)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3