• MATLAB如何将k线图设置为经典红绿配色?


    一个简单的图形对象属性设置小实例?

    效果

    讲解

    首先来看官网的例子哈:

    load SimulatedStock.mat;
    candle(TMW(end-20:end,:),'b')
    
    • 1
    • 2

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V9GO4Y6H-1658909385252)(https://files.mdnice.com/user/23963/6127d89a-4a14-43dd-a7a4-6631355bf173.png)]
    后面的'b'就是'blue'蓝色,当然可以设置为'k'黑色,'r'红色等一系列颜色,但是这样的设置方式的绘图结果依旧是只有k线跌的时候有颜色,涨的时候颜色是空白的,我们想要的是涨和跌分别设为不同颜色。

    首先我们获取一下candle函数的返回值:

    CHdl=candle(TMW(end-20:end,:),'b')
    
    • 1

    我们能够发现返回了一条线及一堆多边形,嗯?多边形的数量对上了,但是线只有一条??,我们get一下那条线的属性:

    get(CHdl(1)) 
    
    • 1

    我们会发现每两个数据点之间都有个NaN,怪不得只用一条线就能生成二十多条线,原来其实还是一条线只不过各个线之间的链接被用NaN替换掉了,要是数据没有用NaN隔开,那么那条线是这样的:

    因此不包含NaN的每两个数据点就可以画出把一条线(或者包含NaN的三个数据点)。

    啊这样就非常简单了,就循环检查一下每个方形是白色还是蓝色,如果是白色,就将方形的面颜色FaceColor、轮廓颜色EdgeColor、以及对应竖直线的颜色Color,修改为红色,否则修改为绿色即可,代码非常简短:

    完整代码

    load SimulatedStock.mat;
    CHdl=candle(TMW(end-20:end,:),'b');
    
    rColor=[208,48,53]./255; % 红色
    gColor=[55,173,55]./255; % 绿色
    
    % 获取竖直线数据
    LineHdl=CHdl(1);
    LineDataX=reshape(LineHdl.XData,3,[]);
    LineDataY=reshape(LineHdl.YData,3,[]);
    
    hold on
    % 若原本颜色是白色则改为红色,蓝色则改为绿色
    for i=2:length(CHdl)
        if CHdl(i).FaceColor(1)==1
            plot(LineDataX(:,i-1),LineDataY(:,i-1),'Color',rColor)
            CHdl(i).FaceColor=rColor;
            CHdl(i).EdgeColor=rColor;
        else
            plot(LineDataX(:,i-1),LineDataY(:,i-1),'Color',gColor)
            CHdl(i).FaceColor=gColor;
            CHdl(i).EdgeColor=gColor;
        end
    end 
    % 删除原本的竖直线
    delete(LineHdl);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26


  • 相关阅读:
    SpringAOP的源码解析
    小红书信息流广告投放怎么收费?投信息流广告效果怎么样
    cf edu #135 Div.2(A~C)
    电脑常用快捷键
    一文读懂Vue.js与React.js的区别
    Python面向对象初始化函数是什么?初始化方法
    Unity基础课程之物理引擎2-碰撞检测案例-吃金币并加分
    logstash 采集的文件mv后
    分析非学历培训管理系统系统架构及功能
    『现学现忘』Docker基础 — 26、Docker镜像分层的理解
  • 原文地址:https://blog.csdn.net/slandarer/article/details/126017136