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

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('汉')));

 

http://www.lryc.cn/news/2394052.html

相关文章:

  • 【计算机网络】IPv6和NAT网络地址转换
  • flutter简单自定义跟随手指滑动的横向指示器
  • 项目日记 -Qt音乐播放器 -搜索模块
  • JavaScript 性能优化实战研讨
  • 有机黑鸡蛋与普通鸡蛋:差异剖析与选购指南
  • CTFHub-RCE 命令注入-无过滤
  • spring IOC控制反转
  • hot100 -- 1.哈希系列
  • leetcode hot100刷题日记——31.二叉树的直径
  • 行为型:解释器模式
  • 逻辑回归详解:从原理到实践
  • FastAPI集成APsecheduler的BackgroundScheduler+mongodb(精简)
  • 本地部署FreeGPT+内网穿透公网远程访问,搞定ChatGPT外网访问难题
  • linux 1.0.3
  • 基于RK3588的智慧农场系统开发|RS485总线|华为云IOT|node-red|MQTT
  • 解锁程序人生学习成长密码,从目标设定开始
  • 简单cnn
  • C#集合循环删除某些行
  • 相机定屏问题分析四:【cameraserver 最大request buffer超标】后置视频模式预览定屏闪退至桌面
  • 【Linux 学习计划】-- 进程地址空间
  • 告别重复 - Ansible 配置管理入门与核心价值
  • 3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云
  • CTFHub-RCE 命令注入-过滤空格
  • 卫生间改造翻新怎么选产品?我在瑞尔特找到了解决方案
  • C++ list数据删除、list数据访问、list反转链表、list数据排序
  • Express教程【002】:Express监听GET和POST请求
  • mysql安装教程--笔记
  • C++ 观察者模式:设计与实现详解
  • 【PostgreSQL 03】PostGIS空间数据深度实战:从地图服务到智慧城市
  • HIT-csapp大作业:程序人生-HELLO‘s P2P