提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:王香|2019-01-28 10:24:45.000|阅读 302 次
概述:Thia post将演示如何创建具有负值的水平堆叠条形图,我们将使用Charting for WinForms组件。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
Thia post将演示如何创建具有负值的水平堆叠条形图。我们将使用Charting for WinForms组件,最终图表如下所示:
使用图表控件的WinForms中的负叠加条形图
该图表将使用四个系列。前两个系列是你清楚看到的 - 红色和蓝色系列。我们用表示数据的随机值初始化两个数据数组:
var firstBarX = new List<double>(11); var secondBarX = new List<double>(11); Random r = new Random(); for(int i = 0; i < 11; i++) { firstBarX.Add(2.2 + r.NextDouble()); secondBarX.Add(2.4 + r.NextDouble()); }
我们需要一个列表,其数据值与第一个系列完全相同,但是为负数。它们将提供一个透明的初始系列,其条形将偏移第一个红色系列,与红色条的值应该是:
//generate data for the transparent series var transparentBarX = new List<double>(firstBarX.Count); for (var i = 0; i < firstBarX.Count; i++) transparentBarX.Add(0 - firstBarX[i]);
Y轴的数据非常简单。我们只需要一个包含1到12之间数字的列表:
//data for the Y-axis var barY = new List<double>(); for (int i = 1; i < 12; i++) barY.Add(i);
我们将创建两个列表,其中包含我们将显示的标签 - 两个轴。Y轴的标签也将用作工具提示。我们只是初始化两个字符串列表:
//initialize labels for the X axis var ageLabels = new List<string>() { "0-5", "6-11", "12-17", "18-23", "24-29", "30-35", "36-41", "42-47", "48-53", "54-59", "60-65" }; //initialize labels for the Y axis. var percentageLabels = new List<string> { "5%", "4%", "3%", "2%", "1%", "0%", "1%", "2%", "3%", "4%", "5%", };
在创建系列时,我们将在下一节中使用此标签列表。
我们将使用Series2D类型的4个系列。此系列对其SupportedLabels属性很有用- 它允许我们指定系列的标签将用于什么。我们从透明系列开始。其标签将用于Y轴的自定义标签:
var seriesTransparent = new MindFusion.Charting.Series2D(transparentBarX, barY, ageLabels); seriesTransparent.SupportedLabels = MindFusion.Charting.LabelKinds.YAxisLabel; seriesTransparent.Title = "";
我们使用前一段中记住的负值来获取X数据。年龄标签是为轴提供数据的标签。 然后我们初始化图表数据的两个系列:
var seriesFirst = new MindFusion.Charting.Series2D(firstBarX, barY, ageLabels); seriesFirst.SupportedLabels = MindFusion.Charting.LabelKinds.ToolTip; seriesFirst.Title = "Female"; var seriesSecond = new MindFusion.Charting.Series2D(secondBarX, barY, ageLabels); seriesSecond.SupportedLabels = MindFusion.Charting.LabelKinds.ToolTip; seriesSecond.Title = "Male";
我们创建的最后一个系列只是为X轴提供数据,我们将其SupportedLabels属性设置为MindFusion.Charting.LabelKinds.XAxisLabel。此系列的X数据对应于X标签的坐标,这就是为什么将数字从-5设置为5作为X数据的原因:
var firstParamList = new List<double>(); for (int i = -5; i < 6; i++) firstParamList.Add(i);
Y数据可以全为零,无论如何我们都不会使用它们。
var secondParamList = new List<double>(); for (int i = 0; i < 12; i++) secondParamList.Add(0);
我们以这种方式创建系列:
//the purpose of this series is to only supply the Xaxis labels, it is transparent. var seriesThird = new MindFusion.Charting.Series2D(firstParamList, secondParamList, percentageLabels); seriesThird.SupportedLabels = MindFusion.Charting.LabelKinds.XAxisLabel; seriesThird.Title = "";
创建完所有系列后,应将它们添加到BarChart的Series集合中:
barChart.Series = new ObservableCollection<Series> { seriesTransparent, seriesFirst, seriesSecond, seriesThird };
如果我们想要显示网格并且网格与轴整齐对齐,我们需要修复X轴的划分。我们将最小值设置为-6,间隔1和最大值设置为6:
barChart.XAxis.Interval = 1; barChart.XAxis.MinValue = -6; barChart.XAxis.MaxValue = 6;
我们将使用另外三个属性来隐藏两个轴上的间隔标签,在它们上显示刻度并为每个轴设置标题:
barChart.XAxis.Title = "Percentage of the Population"; barChart.YAxis.Title = "Ages"; barChart.ShowYCoordinates = false; barChart.ShowXCoordinates = false; barChart.ShowXTicks = true; barChart.ShowYTicks = true;
最后,我们必须设置网格并指定条形是水平的:
barChart.GridType = GridType.Vertical; barChart.HorizontalBars = true;
通过Plot 的SeriesSyle属性完成图表的样式设置。您可以为其分配不同的系列类型,您可以在文档中的ISeriesStyle界面页面上查看列表:
barChart.Plot.SeriesStyle = new PerSeriesStyle() { Strokes = new List<MindFusion.Drawing.Brush> { firstBrush, new SolidBrush(Color.FromArgb(179, 0, 0)), new SolidBrush(Color.FromArgb(0, 0, 102)), firstBrush }, StrokeThicknesses = new List<double> { 0,2,2,0 }, Fills = new List<MindFusion.Drawing.Brush>() { firstBrush, secondBrush, thirdBrush, firstBrush } };
此样式表示其集合中的每个画笔将用于图表中的一个系列。我们为它分配了4个画笔和4个笔画。第一个刷子是透明的,第二个是红色的,另一个是蓝色的,最后一个是黑色的 - 无论如何我们都不会用它画画。
图表的Theme属性包含许多用于自定义外观的选项。以下是其中一些:
barChart.Theme.LegendBorderStrokeThickness = 1; barChart.Theme.LegendBorderStroke = new SolidBrush(Color.Black); barChart.Theme.GridColor2 = Color.White; barChart.Theme.GridColor1 = Color.FromArgb(250, 250, 250); barChart.Theme.GridLineColor = Color.FromArgb(153, 153, 153); barChart.Theme.PlotBackground = new SolidBrush(Color.FloralWhite); ........... ..........
关于WinFms的MindFusion图表:一个多功能仪表板组件,为您的WinForms应用程序提供创建迷人图表,交互式仪表板和实用仪表的能力。该组件结合了灵活的API,允许自定义组合图表组件,以构建您想要的任何类型的图表。您可以添加任意类型的轴,将各种图表系列组合到一个图表中,每个图表都有不同的数据提供者。该控件还支持平移和缩放,滚动,无限数量的图例,网格和仪表板面板。线性和椭圆形仪表完善了工具组并保证了构建完美仪表所需的每个功能,WinForms中任何类型或仪表板的图表都在您的指尖。
购买Mindfusion正版授权,请点击“”哟!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
FlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
它能帮助你创建工作流图,流程图和图表处理
MindFusion.Diagramming for WinFormsFlowChart.NET是一款能够帮助你轻松创建流程图和示意图的.NET控件,可以自定义设计样式和图表框颜色。
MindFusion.Diagramming for ASP.NETASP.NET下灵活的图表组件
MindFusion.Diagramming for Java为您图表的自定义以及个性化提供了多种不同选项
MindFusion.Scheduling for WinForms帮助你管理时间以及重新安排即将到来的预约与事件
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢