ChartControl柱状图指定每一个柱子的颜色

  • 客户需求
  • 实现需求
  • 注意问题

客户需求

前几天工作中遇到客户提的一个新需求,那就是根据值大小修改柱状图柱子的颜色,比如下图所示的样子:

实现需求

在网上查找资料,发现这块儿的资料比较少,很少说单独设置柱状图柱子的颜色。但是功夫不负有心人,终于发现有人问这个问题,其中有回答的,我发现chartcontrol的Series下面有Points属性,通过设置Points的颜色来实现每一个柱子颜色的修改。例如

SeriesPoint mpoint = chart.Series[0].Points[i];
if (mpoint != null)
{mpoint.Color = Color.Yellow;
}

这样,你就可以根据自己的需求把逻辑融入到这段代码中。

注意问题

但是需要注意的俩点是:
1.修改柱子颜色,必须是在Series全部添加完后,否则之前修改的柱子颜色就会无效

 chart.Series.Add(_series);chart.Refresh();if(chart.Series.Count == 2){SetSeriesPointsColor(dataSource, seriesName, chart);}
/// <summary>
/// 设置柱状图每一个柱子的颜色
/// </summary>
/// <param name="dataSource"></param>
/// <param name="seriesName"></param>
/// <param name="chart"></param>
private static void SetSeriesPointsColor(object dataSource, string seriesName, ChartControl chart)
{try{DataTable mdt = (DataTable)dataSource;//注意这里,这里必须写刷新数据这一句,否则图例的Points为0chart.RefreshData();//处理前柱数据if (chart.Series[0] != null && chart.Series[0].Points != null && chart.Series[0].Points.Count > 0 && mdt != null && mdt.Rows.Count > 0){//获取前柱的数目int count = chart.Series[0].Points.Count;int dtcount = mdt.Rows.Count;if (count != dtcount){return;}//循环所有的柱子for (int i = 0; i < chart.Series[0].Points.Count; i++){//获取的单个柱子SeriesPoint mpoint = chart.Series[0].Points[i];if (mpoint != null){//判断前柱的值的大小DataRow mrow = mdt.Rows[i];double sumdata1 = double.Parse(mrow["sumdata1"].ToString());if (sumdata1 > 37.5 && sumdata1 <= 45.8){mpoint.Color = Color.Yellow;}else if (sumdata1 > 45.8){mpoint.Color = Color.Red;}else{mpoint.Color = Color.Blue;}}}}//处理后柱数据if (chart.Series[1] != null && chart.Series[1].Points != null && chart.Series[1].Points.Count > 0 && mdt != null && mdt.Rows.Count > 0){//获取后柱的数目int count = chart.Series[1].Points.Count;int dtcount = mdt.Rows.Count;if (count != dtcount){return;}//循环所有的柱子for (int i = 0; i < chart.Series[1].Points.Count; i++){//获取的单个柱子SeriesPoint mpoint = chart.Series[1].Points[i];if (mpoint != null){//判断前柱的值的大小DataRow mrow = mdt.Rows[i];double sumdata2 = double.Parse(mrow["sumdata2"].ToString());if (sumdata2 > 37.5 && sumdata2 <= 45.8){mpoint.Color = Color.Yellow;}else if (sumdata2 > 45.8){mpoint.Color = Color.Red;}else{mpoint.Color = Color.Green;}}}}}catch(System.Exception ep) { chart.Refresh(); }chart.Refresh();
}

2.在修改柱子颜色之前要刷新一下图例下的数据,否则可能出现Points的Count数目为0 的情况,这就是为啥明明有柱子,但是数目为0,就是因为没有刷新。如下图所示

chart.RefreshData();

最终效果如下图所示,完美的实现了客户的需求

ChartControl柱状图指定每一个柱子的颜色相关推荐

  1. echarts给柱状图某个柱子设置颜色

    1.引用官网的例子,运行后是默认的颜色. 2.给柱状图整体设置颜色 var option = {title: {text: 'ECharts 入门示例'},tooltip: {},legend: {d ...

  2. 利用Office Chart 制作柱图(一个柱子)

    环境:VS.NET 2003 .Office 2003 语言:VBScript .C# 步骤:         1.单击"工具箱-添加/移除项",弹出"自定义工具箱&qu ...

  3. 一个方便的颜色主题组件

    代码地址如下: http://www.demodashi.com/demo/12376.html 演示效果 切换 ECharts 图表主题 项目文件结构截图 代码实现过程 首先,我们必须得熟练使用 b ...

  4. 如何在ppt中生成柱状图_ppt中制作的柱状图只有4个柱子如何增加到8个柱子?

    PPT中增加柱状图的数目具体步骤:1.首先我们打开运行PPT,点击"插入"菜单内的"图标"子菜单,如图所示我们完成了系统默认柱形图的插入.2.单击柱形图,呈现选 ...

  5. 必须为非自相关端口上的非激活接收指定至少一个已初始化的相关集

    出现如下错误:     必须为非自相关端口上的非激活接收指定至少一个已初始化的相关集 其对应的英文应是: you must specify at least one already-initializ ...

  6. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  7. 【简单实现html页面指定某一个div局部刷新】

    [简单实现html页面指定某一个div局部刷新] 运用情景 代码实现 运用情景 根据页面功能需要实现具体的某一个div的数据实现实时刷新,显示实时数据流 代码实现 刷新脚本: # 代码直接放在.htm ...

  8. 【Vue+Element UI】关闭指定某一个页面的loading动画

    [Vue+Element UI]关闭指定某一个页面的loading动画 模板:vue-admin-template v4.4.0 问题描述:由于vue-admin默认配置了全局loading,所以页面 ...

  9. element-ui table 指定单元格动态字体颜色设置

    element-ui table 指定单元格动态字体颜色设置 根据后端返回的值,动态的自动变更element-ui table 指定单元格的字体的颜色或者整行的颜色值 一.指定单元格突出显示颜色,如: ...

  10. 【ORACLE 】卸载重装INS-35075 提示oracle 系统标识符(SID)“orcl“已经存在,请指定另一个SID

    因某些原因需卸载重装一次ORACLE 停止了所有ORACLE 服务 使用安装目录下的deinstall.bat 然后按win键搜索ORACLE依旧存在很多相关文件,找到一个Universal Inst ...

最新文章

  1. js new 运算符到底做了什么?
  2. 上海技术英雄会续:几个典型问题的看法
  3. .NET6 中的 PriorityQueue
  4. 前端学习(1780):前端调试之快速转存站点的方法
  5. 三议(巧用:before和inline-block伪元素解决)跨浏览器不定长宽,中心为基点,百分比定位~...
  6. linux下CPP的认识
  7. matlab编辑rayfile光源文件,rayfile网盘功能详解 rayfile网盘安装步骤及安装注意事项...
  8. ubuntu 18.04 使用 nvm 安装 nodejs
  9. arima基本原理_单变量的ARIMA预测
  10. WhereHows解读
  11. 【炫丽跑车win7主题】
  12. 社交媒体用户行为研究,图神经网络 社交网络
  13. 计算机中库的创建方法,win7系统下库的创建方法
  14. Semantic Parsing on Freebase from Question-Answer Pairs【论文笔记】
  15. 刘备当年是如何面试诸葛亮的?
  16. 自动化成本高?那么如何获得最高的投资回报呢?
  17. 离散拉普拉斯算子与LOG推导
  18. 经典同态加密算法Paillier解读 - 原理、实现和应用
  19. 凡科小程序服务器域名,小程序支付申请及配置教程
  20. 一阶系统开环传递函数表达式_机械振动理论(2)-多自由度系统

热门文章

  1. cadence16.6安装教程
  2. SQL Server数据库优化的几种方法.
  3. 【备忘】Python编程实践视频教程+教材 27集 下载
  4. phpStudy启动失败提示:缺少VC9运行库
  5. python读取kml和kmz格式的google谷歌地球文件
  6. 161套javaWeb项目源码免费分享
  7. 代码行数统计工具cloc
  8. 优质前端掘金小册推荐及优惠购买链接
  9. 大数据shipin教程_尚硅谷大数据视频教程,粉丝众多,人手一套尚硅谷教程
  10. 农用地包括哪些地类_耕地包括哪些地类?怎么区分?都有什么用途?