当前位置: 首页 > news >正文

Matlab选择常见颜色

使用Matlab函数选择常见颜色的RGB值用于绘图等

Matlab自带的颜色种类太少了,只有 r/g/b/c/m/y/k等,而且过于饱和的颜色用来画图并不好看。

现在也有Matlab的颜色插件,大部分的思路是选择一个颜色套系(colormap),然后在其中选择几个不同的颜色。这样画图的线条颜色风格确实比较一致,但是颜色的选择不够自由,而且可能需要一个个试才知道某个颜色实际是什么颜色。

而且这些插件还不够简单,或者需要安装或购买。最简单的颜色生成方法就是:输入一个颜色名称,然后函数输出对应的RGB值,同时提供颜色调色盘方便选择哪个颜色,其实只是一个cell操作就能解决的事情。

声明:所有脚本来源于豆包AI生成后修改,自己用着没问题,不能完全保证正确性。

RGB名字和RGB颜色库生成文件(.m脚本)

  1. 考虑到比较常见且数量足够的颜色库是html标准颜色库,这里让AI总结html颜色表,总计94个,应该是够多了。
  2. 如果你想继续加入颜色,务必保证所有RGB值和颜色名字在各自cell中的顺序是一一对应的。
  3. 每个颜色的名字都是html标准颜色,名字格式为大驼峰法(例如 AaaBbbCcc)。
  4. RGB值已经归一化,取值为0~1的小数。如果要转换成常见的RGB色彩值,乘256即可。所有色彩在RGB256基准下都是整数
  5. 所有的色彩将会被绘制成色环,并标注颜色名,这样可以方便地选取颜色。
  6. 该脚本会保存以下数据:第一,色彩库clrmap.mat(94×2 cell变量名为clrmap,第一列为名称(string),第二行为RGB值(1×3 double matrix));第二,色环图,分别保存为fig和jpg格式,名称为fcolor。

以下是脚本 colorgen.m

%% 自己添加任意颜色clrrgb = {% 品红系(Magenta)[255, 0, 255]./256;      % Magenta[255, 105, 180]./256;    % HotPink[255, 20, 147]./256;     % DeepPink[199, 21, 133]./256;     % MediumVioletRed[219, 112, 147]./256;    % PaleVioletRed[238, 130, 238]./256;    % Violet[255, 192, 203]./256;    % Pink[255, 182, 193]./256;    % LightPink% 红色系(Red)[255, 0, 0]./256;        % Red[220, 20, 60]./256;      % Crimson[178, 34, 34]./256;      % FireBrick[139, 0, 0]./256;        % DarkRed[128, 0, 0]./256;        % Maroon[255, 99, 71]./256;      % Tomato[255, 127, 80]./256;     % Coral[255, 160, 122]./256;    % LightSalmon[255, 128, 128]./256;    % LightCoral% 橙色系(Orange)[255, 165, 0]./256;      % Orange[255, 140, 0]./256;      % DarkOrange[255, 69, 0]./256;       % OrangeRed[255, 215, 0]./256;      % Gold[184, 134, 11]./256;     % GoldenRod[255, 128, 0]./256;      % Orange[210, 105, 30]./256;     % Chocolate[160, 82, 45]./256;      % Sienna[139, 69, 19]./256;      % SaddleBrown[165, 42, 42]./256;      % Brown[139, 35, 35]./256;      % FireBrick% 黄色系(Yellow)[255, 255, 0]./256;      % Yellow[173, 255, 47]./256;     % GreenYellow[154, 205, 50]./256;     % YellowGreen[240, 230, 140]./256;    % Khaki[255, 250, 205]./256;    % LemonChiffon[255, 255, 224]./256;    % LightYellow[250, 250, 210]./256;    % LightGoldenRodYellow[245, 245, 220]./256;    % Beige[255, 248, 225]./256;    % Cornsilk[255, 240, 245]./256;    % LavenderBlush[255, 228, 181]./256;    % Moccasin[255, 222, 173]./256;    % NavajoWhite[255, 218, 185]./256;    % PeachPuff[255, 228, 196]./256;    % Bisque[255, 208, 184]./256;    % Moccasin[255, 192, 128]./256;    % LightSalmon% 绿色系(Green)[0, 255, 0]./256;        % Lime[50, 205, 50]./256;      % LimeGreen[0, 128, 0]./256;        % Green[34, 139, 34]./256;      % ForestGreen[46, 139, 87]./256;      % SeaGreen[85, 107, 47]./256;      % DarkOliveGreen[144, 238, 144]./256;    % LightGreen[152, 251, 152]./256;    % PaleGreen[128, 255, 128]./256;    % LightGreen[0, 255, 128]./256;      % SpringGreen[60, 179, 113]./256;     % MediumSpringGreen[128, 128, 0]./256;      % Olive% 青色系(Cyan)[0, 255, 255]./256;      % Cyan[0, 139, 139]./256;      % DarkCyan[32, 178, 170]./256;     % LightSeaGreen[175, 238, 238]./256;    % PaleTurquoise[0, 128, 128]./256;      % Teal[128, 255, 255]./256;    % LightCyan[240, 255, 255]./256;    % Azure[240, 255, 240]./256;    % HoneyDew% 蓝色系(Blue)[0, 0, 255]./256;        % Blue[0, 0, 205]./256;        % MediumBlue[0, 0, 139]./256;        % DarkBlue[25, 25, 112]./256;      % MidnightBlue[0, 69, 255]./256;       % DodgerBlue[0, 191, 255]./256;      % DeepSkyBlue[135, 206, 235]./256;    % SkyBlue[135, 206, 250]./256;    % LightSkyBlue[173, 216, 230]./256;    % LightBlue[70, 130, 180]./256;     % SteelBlue[100, 149, 237]./256;    % CornflowerBlue[64, 164, 223]./256;     % RoyalBlue[240, 248, 255]./256;    % AliceBlue[248, 248, 255]./256;    % GhostWhite[255, 248, 240]./256;    % FloralWhite[255, 228, 225]./256;    % MistyRose% 紫色系(Purple)[128, 0, 128]./256;      % Purple[138, 43, 226]./256;     % BlueViolet[123, 104, 238]./256;    % MediumSlateBlue[147, 112, 219]./256;    % MediumPurple[186, 85, 211]./256;     % MediumOrchid[128, 0, 255]./256;      % Indigo[128, 128, 255]./256;    % SlateBlue[255, 128, 255]./256;    % Pink% 黑白灰色系(亮→暗)[255, 255, 255]./256;    % White[255, 250, 240]./256;    % Snow[255, 255, 240]./256;    % Ivory[192, 192, 192]./256;    % Silver[128, 128, 128]./256;    % Gray[0, 0, 0]./256           % Black
};clrname = {% 品红系(Magenta)"Magenta";"HotPink";"DeepPink";"MediumVioletRed";"PaleVioletRed";"Violet";"Pink";"LightPink";% 红色系(Red)"Red";"Crimson";"FireBrick";"DarkRed";"Maroon";"Tomato";"Coral";"LightSalmon";"LightCoral";% 橙色系(Orange)"Orange";"DarkOrange";"OrangeRed";"Gold";"GoldenRod";"Orange";"Chocolate";"Sienna";"SaddleBrown";"Brown";"FireBrick";% 黄色系(Yellow)"Yellow";"GreenYellow";"YellowGreen";"Khaki";"LemonChiffon";"LightYellow";"LightGoldenRodYellow";"Beige";"Cornsilk";"LavenderBlush";"Moccasin";"NavajoWhite";"PeachPuff";"Bisque";"Moccasin";"LightSalmon";% 绿色系(Green)"Lime";"LimeGreen";"Green";"ForestGreen";"SeaGreen";"DarkOliveGreen";"LightGreen";"PaleGreen";"LightGreen";"SpringGreen";"MediumSpringGreen";"Olive";% 青色系(Cyan)"Cyan";"DarkCyan";"LightSeaGreen";"PaleTurquoise";"Teal";"LightCyan";"Azure";"HoneyDew";% 蓝色系(Blue)"Blue";"MediumBlue";"DarkBlue";"MidnightBlue";"DodgerBlue";"DeepSkyBlue";"SkyBlue";"LightSkyBlue";"LightBlue";"SteelBlue";"CornflowerBlue";"RoyalBlue";"AliceBlue";"GhostWhite";"FloralWhite";"MistyRose";% 紫色系(Purple)"Purple";"BlueViolet";"MediumSlateBlue";"MediumPurple";"MediumOrchid";"Indigo";"SlateBlue";"Pink";% 黑白灰色系(亮→暗)"White";"Snow";"Ivory";"Silver";"Gray";"Black"
};
%%% 3. 色环核心参数设置(沿用你的原始参数)
N = length(clrrgb);          % 颜色总数
R_inner = 0.6;               % 内圆半径(色块内边界)
R_outer = 1.0;               % 外圆半径(色块外边界)
theta = linspace(0, 2*pi, N+1);  % 每个色块的角度范围(含首尾重合点)% 4. 创建图形窗口并设置属性(沿用你的原始设置,新增回调函数容器)
figure('Position', [0, 0, 1000, 1000], ...'Name', 'HTML颜色色环图(带点击显示RGB)');  % 窗口名称
hold on; axis equal; axis off;             % 等比例坐标轴,隐藏坐标轴
colormap(parula);  % 临时 colormap,不影响色块颜色% 用于存储点击提示文本的句柄(后续点击时更新,避免重复显示)
h_text_info = text(0, -1.3, '', ...'HorizontalAlignment', 'center', ...'FontSize', 10, ...'FontWeight', 'bold', ...'Color', 'red');% 5. 循环绘制每个颜色的扇形色块(新增点击回调功能)
for i = 1:N% —— 步骤1:绘制扇形色块(新增Tag和ButtonDownFcn回调) ——theta1 = theta(i);theta2 = theta(i+1);[x, y] = pol2cart([theta1, theta2, theta2, theta1], [R_inner, R_inner, R_outer, R_outer]);% 绘制色块并添加点击回调:点击时触发显示当前色块的RGB值h_patch = patch(x, y, clrrgb{i}, ...'EdgeColor', 'white', ...'LineWidth', 0.5, ...'Tag', ['color_', num2str(i)]);% —— 步骤2:计算标注位置与角度(完全保留你的原始逻辑) ——theta_mid = (theta1 + theta2) / 2;  % 色块中间角度(弧度)theta_deg = rad2deg(theta_mid);     % 转为角度(0~360°)R_text = R_outer + 0.05;            % 文本半径(略大于色块)[x_text, y_text] = pol2cart(theta_mid, R_text);  % 文本坐标% —— 关键优化:你的角度控制逻辑(完全保留) ——if theta_deg >= 90 && theta_deg < 180text_rotation = theta_deg + 180;h_align = 'right';elseif theta_deg >= 180 && theta_deg < 270text_rotation = theta_deg - 180;h_align = 'right';elsetext_rotation = theta_deg;h_align = 'left';end% —— 步骤3:绘制颜色名称标注(完全保留你的原始设置) ——text(x_text, y_text, clrname{i}, ...'HorizontalAlignment', h_align, ...'VerticalAlignment', 'middle', ...'Rotation', text_rotation, ...'FontSize', 9, ...'FontWeight', 'bold');
endhold off;saveas(gcf,'fcolor.jpg');
savefig(1,'fcolor.fig');clrmap = [clrname clrrgb];
save('clrmap.mat',"clrmap");

以下是生成的色环图,这部分代码比较复杂,如果你想优化就自己进行了。

img

RGB颜色库查找函数(.m函数,名为 fcolor)

执行路径下必须有 fcolor.m函数文件和上述保存的 clrmap.mat

以下是函数fcolor.m文件内容。

% 输入一个颜色名称(标准html颜色),返回对应的0~1 rgb值function [rgb] = fcolor(name)load("clrmap.mat","clrmap");rows = size(clrmap,1);row_find = 0;for k = 1:rowsif(strcmp(clrmap{k,1},name))row_find = k;break;elsecontinue;endendif(row_find==0)warning('Color name does not exist! Black for default.');rgb = [0,0,0];     elsergb = clrmap{row_find,2};end
end

调用fcolor函数,即可返回对应的颜色RGB值。

举一个plot中使用的例子:

 plot(0:0.1:1,0:0.1:1,'-^',...'Color',fcolor("Crimson"),...'MarkerFaceColor',fcolor('Olive'),...'MarkerEdgeColor',fcolor('Indigo')...);

画出来的图长这样:

img

http://www.hskmm.com/?act=detail&tid=32485

相关文章:

  • HyperWorks许可状态监控
  • 2025年纺丝机实力源头靠谱优质口碑厂家推荐,知名品牌纺丝机生产商哪家好?
  • 2025 年防静电地板源头厂家最新推荐榜单:权威品牌实力展现,助力各行业精准挑选优质产品
  • PostgreSQL社区CUUG 院校行 - 内蒙古农业大学计算机与信息工程学院
  • 2025 年激光焊锡源头厂家最新推荐排行榜:覆盖多行业需求,助力企业精准挑选优质设备供应商
  • 2025年西安买房攻略Top10:揭秘高性价比学区房与第四代住宅新趋势
  • 2025年西安购房热点:学区房与地铁盘终极指南
  • 2025年铝复合板厂家Top10排名:一站式服务引领行业新潮流
  • 2025年铝复合板厂家十大排名榜单:行业权威推荐与选择指南
  • 2025年铝复合板厂家综合实力排行榜TOP10:一站式服务成行业新趋势
  • 2025年市面上桥架品牌Top10权威推荐榜:专业选购指南
  • 2025年市面上桥架品牌排行榜前十强权威解析
  • 2025年桥架品牌综合实力排行榜:十大优质供应商权威评测
  • 客户案例 | 未来生物甄知科技,在SAP架构中搭建IT运维智能引擎
  • keycloak~标准的国际化设计
  • 微擎:让每个创意都能开花的小程序生态引擎
  • 哥德尔不完备定理中的完备是什么?是还原论证的具足幻想。不还原就是完备,哥德尔搞不完定理
  • 2025 年最新软瓷生产厂家推荐榜单:聚焦前沿技术与优质服务,助力精准筛选可靠软瓷材料供应商软瓷墙砖/软墙砖/外墙软瓷砖/外墙软瓷片厂家推荐
  • 百度地图打开地图不显示具体内容
  • fac卡片网格灵活控制宽高
  • Ai元人文:用户端元人文
  • 2025 年注浆管生产厂家最新推荐榜:聚焦密封性能,精选优质企业助力工程采购决策岩心管/钢花管/管棚管/注浆管小导管厂家推荐
  • livedream
  • 2025年方钢/扁钢/圆钢/光轴/六角钢/异型钢/冷拉冷拔方钢/冷拉冷拔扁钢/冷拉冷拔圆钢/冷拉冷拔六角钢/冷拉冷拔异型钢/热轧方钢扁钢厂家最新权威推荐榜
  • idea 安装的插件 和pom里引入的依赖区别
  • 2025 年国内弹簧厂商最新推荐排行榜:聚焦定制与精密制造,精选的优质企业高温压力阀/电磁阀/调压阀/阀类/汽车弹簧厂家推荐
  • 使用AWS Security Hub自动业务上下文验证加速安全发现审查
  • 【论文复现上新】NeurIPS 2023! 经典论文! DPO:你的语言模型,其实就是个奖励模型 | 强化学习 | 微调策略
  • 使用 LLVM-Mingw 编译的 Qt 应用程序部署指南:拷贝必要库到 exe 目录
  • 盒子模型