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

代码美学:MATLAB制作渐变色

输入颜色个数n,颜色类型:

n = 2; % 输入颜色个数
colors = {[1, 0, 0], [0, 0, 1]}; 
createGradientHeatmap(n, colors);

 调用函数:

function createGradientHeatmap(n, colors)
    % 输入检查
    if length(colors) ~= n
        error('输入的颜色数量与n不一致!');
    end
    
    % 创建渐变色
    gradientColors = zeros(200, 3); % 200行RGB颜色
    for i = 1:n-1
        startColor = colors{i};
        endColor = colors{i+1};
        % 插值计算当前段颜色
        range = linspace(0, 1, ceil(200/(n-1)));
        for j = 1:3
            gradientColors((i-1)*ceil(200/(n-1)) + (1:length(range)), j) = ...
                interp1([0 1], [startColor(j) endColor(j)], range);
        end
    end
    gradientColors = gradientColors(1:200, :); % 确保200个渐变
    
    % 创建20x10热力图矩阵
    heatmapMatrix = reshape(1:200, [20, 10]);
    
    % 绘制热力图
    figure('Position', [100, 100, 800, 400]); % 设置画布大小
    imagesc(heatmapMatrix);
    colormap(gradientColors);
    colorbar;
    title('Gradient Heatmap');
    axis equal tight;
    
    % 添加黑色分割线
    hold on;
    [rows, cols] = size(heatmapMatrix);
    for i = 1:rows+1
        plot([0.5, cols+0.5], [i-0.5, i-0.5], 'k', 'LineWidth', 1); % 横向分割线
    end
    for j = 1:cols+1
        plot([j-0.5, j-0.5], [0.5, rows+0.5], 'k', 'LineWidth', 1); % 纵向分割线
    end
    hold off;
    
    % 保存高清图片
    saveas(gcf, 'gradient_heatmap_with_lines.png');
    disp('热力图已保存为gradient_heatmap_with_lines.png');
end

%示例调用
%n = 3; % 输入颜色个数
%colors = {[1, 0, 0], [0, 1, 0], [0, 0, 1]}; % 红-绿-蓝渐变
%createGradientHeatmap(n, colors);

结果:

 


http://www.kler.cn/a/411394.html

相关文章:

  • day18 结构体
  • 【系统架构设计师】真题论文: 论数据访问层设计技术及其应用(包括解题思路和素材)
  • AIGC--AIGC与人机协作:新的创作模式
  • 【H2O2|全栈】JS进阶知识(十一)axios入门
  • Spring Boot集成MyBatis-Plus:自定义拦截器实现动态表名切换
  • Excel如何批量导入图片
  • 区块链知识体系
  • 人工智能与人类:共创未来的新篇章
  • snmp MIB详解
  • UE5 实现组合键触发事件的方法
  • 滑动窗口篇——如行云流水般的高效解法与智能之道(3)
  • 第二十二周周报:Stable Diffusion
  • box-im学习
  • 跨部门文件共享安全:平衡协作与风险的关键策略
  • vscode添加环境变量(mujoco)
  • 2024.9 Pruning Cycles in UMLS Metathesaurus: A NeuroSymbolic AI Approach
  • C++设计模式(单例模式)
  • Ubuntu下Docker容器java服务往mysql插入中文数据乱码
  • UE5材质混合模式
  • mysql深度分页优化
  • FPGA中的电平标准
  • nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
  • 第二十二课 Vue中的组件切换
  • C#中面试的常见问题007
  • redis工程实战介绍(含面试题)
  • 【es6】原生js在页面上画矩形层级等问题的优化(二)