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

代码美学3:RGB转化+MATLAB制作渐变色

RGB颜色转化器(转换成matlab可以读取的形式)

n = input('请输入 n:');
color_matrix = cell(1, n);
for i = 1:n
    R = input('请输入 R 值:');
    G = input('请输入 G 值:');
    B = input('请输入 B 值:');
    color_matrix{i} = [R/255, G/255, B/255];
end
color_matrix

调用函数: 

n = 3; % 输入颜色个数
colors = {[0.913725490196078,0.356862745098039,0.435294117647059]	[0.933333333333333,0.705882352941177,0.717647058823529]	[0.949019607843137,0.678431372549020,0.450980392156863]}; 
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
    
    % 在热力图上添加数字标注,步长为0.5,数字竖着增加
    step = 0.5; % 设置步长
    number = 0.5; % 从0开始
    for j = 1:cols  % 按列递增
        for i = 1:rows  % 按行循环
            % 在每个格子中添加数字
            text(j, i, num2str(number, '%.1f'), 'Color', 'black', 'HorizontalAlignment', 'Center', 'VerticalAlignment', 'Middle');
            number = number + step; % 递增步长
        end
    end
    
    hold off;
    
    % 保存高清图片
    saveas(gcf, 'gradient_heatmap_with_lines_and_numbers_vertical.png');
    disp('热力图已保存为gradient_heatmap_with_lines_and_numbers_vertical.png');
end


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

 


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

相关文章:

  • 使用 pycharm 新建不使用 python 虚拟环境( venv、conda )的工程
  • 开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序源码助力品牌共建:价值、策略与实践
  • springboot视频网站系统的设计与实现(代码+数据库+LW)
  • C#中面试的常见问题005
  • Linux lsof
  • SpringCloud入门实战-Nacos简介、安装、运行详解
  • nodejs import 导入module.exports = xxx的模块, 在ES6项目中导入commonJs规范的require模块
  • 物联网实验室建设方案
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验二----网络分析(超超超详细!!!)
  • 鸿蒙本地模拟器 模拟TCP服务端的过程
  • python简单算法
  • java全栈day10--后端Web基础(基础知识)
  • Nginx 架构与设计
  • 【计算机网络】多路转接之poll
  • 【rustdesk】客户端和服务端的安装和部署(自建服务器,docker,远程控制开源软件rustdesk)
  • Android开发简单mp4播放器
  • JAVA:Spring Boot 3 实现 Gzip 压缩优化的技术指南
  • 【计算机网络】Wireshark的小测试(Protocol Layers-Wireshark抓包与协议分析实验)
  • 构建Ceph分布式文件共享系统:手动部署指南
  • 在编译Elasticsearch源码时选择Gradle版本
  • 集成 FPGA
  • docker学习的初识
  • Android和Java的发布/订阅事件总线EventBus
  • 决策树——基于乳腺癌数据集与cpu数据集实现
  • 小米PC电脑手机互联互通,小米妙享,小米电脑管家,老款小米笔记本怎么使用,其他品牌笔记本怎么使用,一分钟教会你
  • java语言同时处理多个数据以及计算百分比保留整数