编辑
2025-09-25
C#
00

目录

摘要
正文
liveChart2 散点图用的是CartesianChart类

摘要

LiveCharts2 散点图是一种用于展示两个变量之间关系的图表类型,可以直观地表现数据的分布情况。在使用散点图时,通常会使用坐标轴来标识横坐标和纵坐标的范围,以及添加图例来说明每个点的含义。

正文

.net 6下需要单独安装

现在最新版本通过Nuget命令安装

https://www.nuget.org/packages/LiveChartsCore.SkiaSharpView.WinForms 下载最新的版本

NuGet\Install-Package LiveChartsCore.SkiaSharpView.WinForms -Version 2.0.0-beta.860

image.png

安装CommunityToolkit.Mvvm.ComponentModel

image.png

liveChart2 散点图用的是CartesianChart类

这里用的Series 是 ScatterSeries

C#
public class ScatterModel: ObservableObject { private Random _random = new Random(); public ISeries[] Series { get; set; } = { new ScatterSeries<ObservablePoint> { Name="故障", Values = new ObservableCollection<ObservablePoint> { } } }; public void RandomChange() { var series = (ObservableCollection<ObservablePoint >)Series[0].Values; series.Add(new ObservablePoint(_random.Next(1, 10), _random.Next(1, 10))); } }

这里做了一个鼠标点击添加点的事件

C#
public partial class Form7 : Form { private CartesianChart cartesianChart; ScatterModel model = new ScatterModel(); public Form7() { InitializeComponent(); //配制全局中文显示,不然会乱码 LiveCharts.Configure(x => { x.HasGlobalSKTypeface(SKFontManager.Default.MatchCharacter('汉')); }); Init(); } public async void Init() { cartesianChart = new CartesianChart { Series = model.Series, LegendPosition = LiveChartsCore.Measure.LegendPosition.Right, }; this.Controls.Add(cartesianChart); cartesianChart.Dock = DockStyle.Fill; cartesianChart.EasingFunction = LiveChartsCore.EasingFunctions.BounceOut;//增加动画效果 UpdateValue(); //点击事件 cartesianChart.MouseDown += CartesianChart_MouseDown; } private void CartesianChart_MouseDown(object? sender, MouseEventArgs e) { var chart = (CartesianChart)sender; //取得鼠标点击的位置 var dataCoordinates = chart.ScalePixelsToData(new LvcPointD(e.Location.X, e.Location.Y)); var _data = (ObservableCollection<ObservablePoint>)model.Series[0].Values; _data.Add(new ObservablePoint(dataCoordinates.X, dataCoordinates.Y)); } private async void UpdateValue() { while (true) { model.RandomChange(); cartesianChart.Series = model.Series; await Task.Delay(3000); } } }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!