代码美学:MATLAB制作渐变色

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

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

调用函数:

Matlab 复制代码
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);

结果:

相关推荐
apcipot_rain4 小时前
C++转Java日记(04)
java·开发语言·c++
云和数据.ChenGuang5 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
蜗牛一步步往上爬8 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
张张123y10 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶13 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing0314 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
雪落漂泊14 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
波力海苔夹心脆67515 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典
不会算法的笨小孩15 小时前
异常的使用以及会出现的问题
开发语言·c++·c++11·异常
严肃小白兔17 小时前
MATLAB 数值计算中的精度与误差问题:浮点运算、误差传播与数值稳定性
人工智能·算法·matlab