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

winform LiveCharts2的使用--图表的使用

介绍

对于图标,需要使用到livechart2中的CartesianChart 控件是一个“即用型”控件,用于使用笛卡尔坐标系创建绘图。需要将Series属性分配一组ICartesianSeries。

例如下面代码,创建一个最简单的图表:

cartesianChart1.Series = new ISeries[]
{new LineSeries<int>{Values = new int[] { 4, 6, 5, 3, -3, -1, 2 }},new ColumnSeries<double>{Values = new double[] { 2, 5, 4, -2, 4, -3, 5 }}
};

代码中new LineSeries<int>表示图上的曲线图,new ColumnSeries<double>表示图上的柱状图。通过对Values赋值,来构建每一个点。也有StepLineSeries,表示步线图:

一个图标由四部分组成,分别是Series(图形)、Axes(坐标轴)、Tooltip(提示信息)、Legend(图例),分别对应图上内容:

 

Series介绍

LineSeries

private LineSeries<ObservableValue> m_lineSeries { get; set; }
public ISeries[] Series { get; set; }private void cartesianChart1_Load(object sender, EventArgs e)
{m_lineSeries = new LineSeries<ObservableValue>(){Name = "直通率(%)",Values = new ObservableCollection<ObservableValue>(),DataLabelsPosition = LiveChartsCore.Measure.DataLabelsPosition.Top,  // 数值显示位置DataLabelsPaint = new SolidColorPaint(new SKColor(45, 45, 45)),  // 设置显示在图形中的数值颜色LineSmoothness = 1,  // 设置曲线的平滑性, 0--1,由直到弯曲Fill = new SolidColorPaint(new SKColor(20, 200, 200, 128)),  // 设置图形填充,折线的下部分进行填充};List<int> ints = new List<int>() { 1, 3, 2, 5, 6 };m_lineSeries.Values = ints.Select(value=>new ObservableValue(value)).ToList();Series = [m_lineSeries];cartesianChart1.Series = Series;
}

List<int> ints = new List<int>() { 1, 3, 2, 5, 6 };

m_lineSeries.Values = ints.Select(value=>new ObservableValue(value)).ToList();

此处用于设置在图中描绘的点,表示的是Y轴对应的值

Series = [m_lineSeries];

cartesianChart1.Series = Series;

将series在图上绘制

属性:

Name

图例名称

Values

图形对应的点值

DataLabelsPosition

数值在图形中显示的位置

默认Top;

DataLabelsPosition = LiveChartsCore.Measure.DataLabelsPosition.Top

DataLabelsPaint

数值显示的颜色

DataLabelsPaint = new SolidColorPaint(new SKColor(45, 45, 45))

DataLabelsFormatter

数值在图像上格式化显示

DataLabelsFormatter = value => (value.Coordinate.PrimaryValue / 100).ToString("P"),

以百分比形式显示

LineSmoothness

设置曲线的平滑性

0--1,由直到弯曲

Fill

设置图形填充,图形下部分进行填充颜色

Fill = new SolidColorPaint(new SKColor(20, 200, 200, 128))

null不填充

ScalesYAt

数值对应哪一个Y轴显示(如果有多个Y轴)

Stroke

显示图形的边框属性

IsHoverable

鼠标悬停在图形点时,是否显示详细信息

默认true

DataLabelsFormatter:

  • "N":数字格式(带千位分隔符)。
    • 示例:1234.567.ToString("N2")"1,234.57"
  • "F":定点数格式。
    • 示例:1234.567.ToString("F2")"1234.57"
  • "C":货币格式。
    • 示例:1234.567.ToString("C2")"$1,234.57"(取决于区域设置)
  • "P":百分比格式。
    • 示例:0.567.ToString("P2")"56.70%"
  • "E":科学计数法格式。
    • 示例:1234.567.ToString("E2")"1.23E+003"
  • "d":短日期格式。
    • 示例:DateTime.Now.ToString("d")"10/15/2023"
  • "D":长日期格式。
    • 示例:DateTime.Now.ToString("D")"Sunday, October 15, 2023"
  • "t":短时间格式。
    • 示例:DateTime.Now.ToString("t")"10:30 AM"
  • "T":长时间格式。
    • 示例:DateTime.Now.ToString("T")"10:30:45 AM"
  • "yyyy-MM-dd":自定义日期格式。
    • 示例:DateTime.Now.ToString("yyyy-MM-dd")"2023-10-15"
  • "0.00":强制显示两位小数。
    • 示例:1234.5.ToString("0.00")"1234.50"
  • "#,###":添加千位分隔符。
    • 示例:1234567.ToString("#,###")"1,234,567"
  • "0.##%":自定义百分比格式。
    • 示例:0.567.ToString("0.##%")"56.7%"

Stroke = new SolidColorPaint(new SKColor(0, 0, 0)){StrokeThickness = 2 }

new SKColor(0, 0, 0)设置边框的颜色

StrokeThickness设置绘制边框的粗细值

ColumnSeries

ColumnSeries 用于绘制柱状图,适合展示离散数据的对比。每个柱子代表一个数据点,柱子的高度由数据点的值决定。可以同时显示多个 ColumnSeries,用于比较不同类别的数据。

private ColumnSeries<ObservableValue> m_onepass_columnSeries { get; set; }
private void cartesianChart1_Load(object sender, EventArgs e)
{m_onepass_columnSeries = new ColumnSeries<ObservableValue>(){Name = "一次PASS",Values = new ObservableCollection<ObservableValue>(),ScalesYAt = 0,DataLabelsPosition = LiveChartsCore.Measure.DataLabelsPosition.Top,  // 数值显示位置DataLabelsPaint = new SolidColorPaint(new SKColor(45, 45, 45)),  // 设置显示在图形中的数值颜色IgnoresBarPosition = true,MaxBarWidth = 20,Stroke = null,};List<int> ints = new List<int>() { 1, 3, 2, 5, 6 };m_onepass_columnSeries.Values = ints.Select(value=>new ObservableValue(value)).ToList();Series = [m_onepass_columnSeries];cartesianChart1.Series = Series;
}

属性(有相同属性,不进行介绍):

Rx 和 Ry

设置柱子的圆角半径

Rx = 5;Ry = 5;

MaxBarWidth

设置柱子的最大宽度

MaxBarWidth = 20

IgnoresBarPosition

忽略位置显示,当有多个柱状图时,可以重叠显示

默认false

StepLineSeries

阶梯线图 通过水平线和垂直线连接数据点,形成阶梯状的折线。每个数据点的值决定了阶梯的高度。适合展示离散数据的变化,尤其是数据点之间的变化是突变的场景。

private StepLineSeries<ObservableValue> m_time_stepline { get; set; }
private void cartesianChart1_Load(object sender, EventArgs e)
{m_time_stepline = new StepLineSeries<ObservableValue>(){Name = "time",Values = new ObservableCollection<ObservableValue>(),ScalesYAt = 0,};List<int> ints = new List<int>() { 1, 3, 2, 5, 6 };m_time_stepline.Values = ints.Select(value=>new ObservableValue(value)).ToList();Series = [m_time_stepline];cartesianChart1.Series = Series;
}

属性(有相同属性,不进行介绍):

GeometryFill

数据点的填充颜色

GeometryFill = new SolidColorPaint(SKColors.Red);

GeometryStroke

数据点的描边颜色

GeometryStroke = new SolidColorPaint(SKColors.Black);

GeometrySize

数据点的大小

GeometrySize = 10;

Axes介绍

Axes(坐标轴)用于定义数据的显示范围和刻度。可以配置为 X 轴、Y 轴,甚至是多轴(例如多个 Y 轴)。每个轴可以独立配置其外观、刻度、标签等属性。

// 定义X轴
cartesianChart1.XAxes = [new Axis{TicksPaint = new SolidColorPaint(new SKColor(35, 35, 35)),  // 刻度线颜色TicksAtCenter = true,  // 是否位于中间MinStep = 1,SeparatorsPaint = new SolidColorPaint(new SKColor(200, 200, 200)),CrosshairLabelsBackground = SKColors.DarkOrange.AsLvcColor(),CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkRed),CrosshairPaint = new SolidColorPaint(SKColors.DarkOrange, 1),Labeler = value => value.ToString("N3")}];
// 定义Y轴 这里定义了两个
cartesianChart1.YAxes = [new Axis{TicksPaint = new SolidColorPaint(new SKColor(35, 35, 35)),  // 刻度线颜色TicksAtCenter = true,  // 是否位于中间Position = LiveChartsCore.Measure.AxisPosition.Start,MinLimit = 0,},new Axis{Position = LiveChartsCore.Measure.AxisPosition.End,Labeler = (value) => (value/100).ToString("P"),MinLimit = 0,  // 最小范围}
];

XAxes 用于定义X轴属性

YAxes 用于定义Y轴属性

属性:

MinLimit MaxLimit

坐标轴的最小值和最大值。

MinStep

刻度的最小步长

TicksPaint

刻度线的颜色

TicksPaint = new SolidColorPaint(SKColors.Black)

TicksAtCenter

刻度线是否位于坐标轴的中心

默认true

SeparatorsPaint

分隔线的颜色

SeparatorsPaint = new SolidColorPaint(SKColors.Gray)

ShowSeparatorLines

是否显示分隔线

默认true

LabelsPaint

刻度标签的文字颜色

LabelsPaint = new SolidColorPaint(SKColors.Black)

LabelsRotation

刻度标签的旋转角度

LabelsRotation = 45 旋转45°

Labeler

自定义刻度标签的显示内容

Labeler = value => value.ToString("N2");

N2:显示两位小数

CrosshairLabelsBackground

十字准线标签的背景颜色

CrosshairLabelsBackground = SKColors.DarkOrange.AsLvcColor()

CrosshairLabelsPaint

十字准线标签的文字颜色

CrosshairLabelsPaint = new SolidColorPaint(SKColors.DarkRed)

CrosshairPaint

十字准线的颜色和宽度

CrosshairPaint = new SolidColorPaint(SKColors.DarkOrange, 1)

NamePaint

坐标轴标题的文字颜色

Position

坐标轴的位置

Position = LiveChartsCore.Measure.AxisPosition.Start

start:左侧或下侧

end:右侧或上侧

cartesianChart

可以设置的属性:

ZoomMode

设置沿哪个轴可以拖动

LegendPosition

Legend显示的位置

LegendTextSize

Legend文本的大小

Title

图表的标题

cartesianChart1.Title = new LabelVisual
{Text = "chart",TextSize = 20,BackgroundColor = new LvcColor(20, 200, 200)
};
cartesianChart1.ZoomMode = LiveChartsCore.Measure.ZoomAndPanMode.X;  // 可以沿X轴拖动
cartesianChart1.LegendPosition = LiveChartsCore.Measure.LegendPosition.Bottom;  // 显示位置
cartesianChart1.LegendTextSize = 18;  // 文本大小
cartesianChart1.Dock = DockStyle.Fill;  // 布局

中文乱码

如果在使用的过程中出现中文乱码,可以试试在Main中加入这行代码:

LiveCharts.Configure(config => config.HasGlobalSKTypeface(SKFontManager.Default.MatchCharacter('汉')));

 

相关文章:

  • Linux 使用 Docker 安装 Milvus的两种方式
  • 微信小程序的软件测试用例编写指南及示例--性能测试用例
  • 【CSS】CSS 和 SASS 的区别
  • 【平面波导外腔激光器专题系列】用于光纤传感的低噪声PLC外腔窄线宽激光器
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 理解 Kubernetes 的架构与控制平面组件运行机制
  • 【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
  • word批量导出visio图
  • Nginx--手写脚本压缩和切分日志(也适用于docker)
  • 【Java实战】集合排序方法与长度获取方法辨析(易懂版)
  • Python实现VTK-自学笔记(5):在三维世界里自由舞蹈——高级交互与动态可视化
  • 得物Java开发面试题及参考答案(下)
  • 力扣面试150题--完全二叉树的节点个数
  • 【数据结构】单链表练习
  • openresty+lua+redis把非正常访问的域名加入黑名单
  • 百度ocr的简单封装
  • AWS之AI服务
  • 基于Python的简易聊天机器人实现:从原理到实践
  • AWS WebRTC:获取信令服务节点和ICE服务节点
  • SAP-ABAP:在DEBUG过程中修改内表中的数据的方法详解
  • 网站分析怎么写/怎样弄一个自己的平台
  • 网站的空间是/免费十八种禁用网站
  • 网站文章系统/最近的电脑培训学校
  • 佛山网站建设公司排名/seo销售好做吗
  • 佛山行业网站建设/搜什么关键词比较刺激
  • 沈丘做网站去哪里/提供seo顾问服务适合的对象是