LiveCharts2 散点图是一种用于展示两个变量之间关系的图表类型,可以直观地表现数据的分布情况。在使用散点图时,通常会使用坐标轴来标识横坐标和纵坐标的范围,以及添加图例来说明每个点的含义。
.net 6下需要单独安装
现在最新版本通过Nuget命令安装
https://www.nuget.org/packages/LiveChartsCore.SkiaSharpView.WinForms 下载最新的版本
NuGet\Install-Package LiveChartsCore.SkiaSharpView.WinForms -Version 2.0.0-beta.860
安装CommunityToolkit.Mvvm.ComponentModel
这里用的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 许可协议。转载请注明出处!