MS图表烛台如何设置尾部颜色

2024-05-14

我目前正在使用 Visual C# 中的 mschart 开发烛台图。 我现在创建了两个图表,创建的图表如下

问题 1. 查看顶部的蜡烛图。我想将每根杆的尾部颜色应用为红色或蓝色。

问题 2. 查看底部的条形图。我想对此图表应用红色或蓝色。我想将相同的颜色应用于蜡烛图的顶部。我该怎么做 ?

[source]

DataTable table_ChartData = new DataTable();
table_ChartData.Columns.Add("Id");
table_ChartData.Columns.Add("Open");
table_ChartData.Columns.Add("Close");
table_ChartData.Columns.Add("High");
table_ChartData.Columns.Add("Low");
table_ChartData.Columns.Add("Day");
dataGridView1.DataSource = table_ChartData;  

chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 1;
chart1.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 1;
chart1.ChartAreas["ChartArea1"].AxisY.Maximum = max;
chart1.ChartAreas["ChartArea1"].AxisY.Minimum = min;

chart1.ChartAreas["ChartArea1"].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.WordWrap;
chart1.ChartAreas["ChartArea1"].AxisX.IsLabelAutoFit = true;
chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = true;


chart1.Series["Candle"].XValueMember = "Day";            
chart1.Series["Candle"].YValueMembers = "High,Low,Open,Close,Volume";
chart1.Series["Candle"].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Date;
chart1.Series["Candle"].CustomProperties = "PriceDownColor=Blue,PriceUpColor=Red";
chart1.Series["Candle"]["OpenCloseStyle"] = "Triangle";
chart1.Series["Candle"]["ShowOpenClose"] = "Both";
chart1.DataSource = table_ChartData;
chart1.DataBind();

////////////////////////////////////////////////////////////

chart2.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineWidth = 1;
chart2.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineWidth = 1;
chart2.ChartAreas["ChartArea1"].AxisY.Maximum = v_max + (v_max / 10);
chart2.ChartAreas["ChartArea1"].AxisY.Minimum = v_min / 2;

chart2.ChartAreas["ChartArea1"].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.WordWrap;
chart2.ChartAreas["ChartArea1"].AxisX.IsLabelAutoFit = true;
chart2.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = true;


chart2.Series["Bar"].XValueMember = "Day";
chart2.Series["Bar"].YValueMembers = "Volume";
chart2.Series["Bar"].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Date;
chart2.Series["Bar"].YValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Int32;
chart2.DataSource = table_ChartData;
chart2.DataBind();

In a 烛台图 https://msdn.microsoft.com/en-us/library/dd456671.aspxCustomProperties根据趋势自动设置框的颜色:

someSeries.SetCustomProperty("PriceUpColor", "Green");   
someSeries.SetCustomProperty("PriceDownColor", "Red");

不幸的是,无法设置连接高值和低值的线条的颜色。

但是,除非您弄乱了其他自定义属性并且 x 值有意义,否则您可以轻松绘制这些线条,并且通过分别绘制顶部和底部部分,您还可以使用不同的颜色。

这是一个例子:

private void chart6_PostPaint(object sender, ChartPaintEventArgs e)
{
    ChartArea ca = chart6.ChartAreas[0];
    Series s = chart6.Series[0];
    Pen hiPen = Pens.Green;
    Pen loPen = Pens.Red;

    if (e.ChartElement == s)
    foreach (DataPoint dp in s.Points)
    {
        float x       = (float)ca.AxisX.ValueToPixelPosition(dp.XValue);
        float y_hi    = (float)ca.AxisY.ValueToPixelPosition(dp.YValues[0]);
        float y_low   = (float)ca.AxisY.ValueToPixelPosition(dp.YValues[1]);
        float y_open  = (float)ca.AxisY.ValueToPixelPosition(dp.YValues[2]);
        float y_close = (float)ca.AxisY.ValueToPixelPosition(dp.YValues[3]);

        e.ChartGraphics.Graphics.DrawLine(hiPen, x, y_low, x, Math.Min(y_close, y_open));
        e.ChartGraphics.Graphics.DrawLine(loPen, x, y_hi,  x, Math.Max(y_close, y_open));
    }
}

要为第二个图表的点设置颜色,您需要循环遍历这些点,因为那里的颜色cannot https://stackoverflow.com/questions/33027058/binding-list-of-lists-to-chart-control/33082008?s=6%7C0.0956#33082008被设置为绑定。

代码很简单:

void SetColors(Series candles, Series columns)
{
    for (int i = 0; i < candles.Points.Count; i++)
    {
        DataPoint dp = candles.Points[i];
        columns.Points[i].Color =
            dp.YValues[2] > dp.YValues[3] ? Color.Red :  Color.Green;
    }
}

绑定后调用即可!

Result:

请注意,为了避免看到原始线条透出,我们设置了BorderWidth to 0:

someSeries.BorderWidth = 0;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS图表烛台如何设置尾部颜色 的相关文章

随机推荐

  • 创建自定义迭代器 Java?

    我对如何在 Java 中为类实现自定义迭代器有点困惑 我基本上需要创建一个 ArrayList 而不使用我已经可用的内置库 我了解创建类的基础知识 但我无法理解如何让迭代器适应所有这些 我有以下内容 我创建了一个实现可迭代接口的泛型类 它看
  • 删除整个数据库太容易了

    有没有办法保护数据库不被删除 我的意思是单击根节点旁边的 x 非常容易 这会破坏整个应用程序并造成巨大的混乱 如何应对这种脆弱性 EDIT 假设我有两个 Firebase 帐户 一个用于测试 另一个用于启动的应用程序 我经常登录和退出以使用
  • 从移动版本切换到完整网站(桌面版本)

    我使用此代码将用户从桌面版本引导到我的移动网站
  • pyspark flatmat 错误:TypeError:“int”对象不可迭代

    这是我书中的示例代码 from pyspark import SparkConf SparkContext conf SparkConf setMaster spark chetan ThinkPad E470 7077 setAppNam
  • Eigen 中的元素最大值和正部分

    我想在特征中取两个向量 矩阵的元素最大值 到目前为止 我已经编写了这段代码 template
  • 指向 Twitter 用户的 URL 链接(包含 ID,而不是姓名)

    我想要一个指向我的 Twitter 页面的链接 该页面使用我的 Twitter ID 而不是 Twitter 名称来引用它 这是因为我想将链接构建到应用程序中 并且该帐户的 Twitter 名称将来可能会更改 在解决这个问题一段时间后 找到
  • C# 中服务器端代码的 ModalPopupExtender

    我做了一场噩梦 将 ModalPopupExtender 添加到表单很容易 您将其放在上面并告诉它两个所需的控件参数 PopupControlID MyModalPanel TargetControlID ButtonToLoadIt 它工
  • 在 Java 中使用默认值创建 Annotation 实例

    如何创建以下注释的实例 所有字段设置为其默认值 Retention RetentionPolicy RUNTIME public interface Settings String a default AAA String b defaul
  • 使用 Django LocalFlavor Zip 作为模型字段

    实施以下内容的最佳方法是什么 models py gt gt gt from django db import models gt gt gt from django contrib auth models import User Crea
  • 尽管没有错误,但无法在 Eclipse 中运行 Android 项目

    当我尝试运行我的 Android 项目 昨天运行良好 时 我收到 您的项目包含错误 请在运行应用程序之前修复它们 对话框 但我的项目没有错误 我以前遇到过这个问题 解决方案总是清理项目 但这次没有帮助 红色 X 图标从工作区的项目中消失 然
  • 为什么我的 C# Paint 方法内存不足?

    我是 C 新手 尝试通过编写一些简单的应用程序来熟悉语法和 NET 库 我最近进行的一个迷你项目是极地时钟就像这里发现的一样 https mbostock github io protovis ex clock html 我早期注意到的问题
  • Twitter Streaming API 使用的官方编码?是UTF-8吗?

    Twitter 流 API 的官方编码是什么 根据我所看到的 我最好的猜测是 UTF 8 但我想避免做出假设 我见过的 Twitter 网站上唯一暗示他们使用什么作为官方编码的部分是在这里 Twitter 不想因为我们使用 UTF 8 或相
  • 在后台每 X 分钟执行一次函数不起作用

    我使用此代码每 X 分钟执行一次函数 void executeEveryOneMinute self myFunction dispatch after dispatch time DISPATCH TIME NOW int64 t 60
  • 获取测试用例中的 BOOST TEST 测试套件名称

    我在用着BOOST TEST我想知道是否有办法找出test suite从里面test case 我知道我能找到test case的名字由 boost unit test framework current test case p name
  • Hibernate 序列乘以 50 生成“@Id”?

    private static final String SEQUENCE my seq Id GeneratedValue strategy GenerationType SEQUENCE generator SEQUENCE Sequen
  • 限制 terraform 嵌套资源中的 AWS 安全组设置

    我有一个aws directory service directory服务中定义的资源 这会创建一个安全组 https registry terraform io providers hashicorp aws latest docs re
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 从本地缓存恢复SVN密码

    有没有办法从本地缓存恢复密码 密码必须存储在某处 因为我可以运行 svn co http my svn server foo 但我自己丢失了密码 我是否必须重置它 或者是否可以 以及如何 找到并解密密码 我主要在 Windows 上使用 C
  • 如何在 iframe 加载时向页面添加加载指示器?

    我当前正在创建一个页面 单击链接后 iframe 将插入到 div 中并加载其内容 我使用以下 jQuery 调用来执行此操作 mydiv html 有时会加载源内容very慢慢地 结果看起来什么也没有发生 我希望在 iframe 内容加载
  • MS图表烛台如何设置尾部颜色

    我目前正在使用 Visual C 中的 mschart 开发烛台图 我现在创建了两个图表 创建的图表如下 问题 1 查看顶部的蜡烛图 我想将每根杆的尾部颜色应用为红色或蓝色 问题 2 查看底部的条形图 我想对此图表应用红色或蓝色 我想将相同