.net---图表库(LiveCharts.Wpf)

1. LiveCharts介绍

一个灵活、简单,开源的图表库 LiveCharts.Wpf.

2. LiveCharts的使用

  1. Nuget 项目下载安装这个包
  2. 在项目中引用
xml 复制代码
<Window
    x:Class="Scottplot应用.View.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:Scottplot应用.View"
    xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:scottPlot="clr-namespace:ScottPlot;assembly=ScottPlot.WPF"
    xmlns:stylet="https://github.com/canton7/Stylet"
    Title="MainWindow"
    Width="900"
    Height="750"
    mc:Ignorable="d">
    <Grid>

        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>

        <!--
            Hoverable="False":禁用图表悬停交互效果
            DisableAnimations="True":关闭所有动画效果
            Series="{Binding SeriesCollection}":通过数据绑定设置图表系列
        -->
        <lvc:CartesianChart
            x:Name="mChart"
            Background="#fff"
            DisableAnimations="True"
            Hoverable="False"
            MouseMove="mChart_MouseMove"
            Series="{Binding SeriesCollection}"
            Visibility="{Binding IsHistoryVisible}">
            <!--  SelectionMode="OnlySender":仅显示鼠标直接悬停的数据点提示  -->
            <lvc:CartesianChart.DataTooltip>
                <lvc:DefaultTooltip SelectionMode="OnlySender" />
            </lvc:CartesianChart.DataTooltip>
            <!--  AnimationsSpeed="0:0:0.5"  -->

            <!--
                Title 绑定:动态显示数据单位(如 "温度 (°C)")
                LabelFormatter:自定义 Y 轴标签格式(如数值格式化)
                MaxValue/MinValue 双向绑定:动态控制 Y 轴显示范围
                AxisSection:添加一条橙色参考线(YPointer)
                Separator:设置网格线样式(虚线,灰色)
                Unit: 时间刻度,
                Step: 多少刻度显示一个标签
            -->

            <lvc:CartesianChart.AxisY>
                <lvc:Axis Name="YAxis" Title="{Binding SelectedData.Unit, Mode=OneWay}" LabelFormatter="{Binding YFormatter}" MaxValue="{Binding YAxisMax, Mode=TwoWay}" MinValue="{Binding YAxisMin, Mode=TwoWay}">
                    <lvc:Axis.Sections>
                        <lvc:AxisSection
                            Panel.ZIndex="1"
                            DataLabel="True"
                            DataLabelForeground="White"
                            DisableAnimations="True"
                            Stroke="#ff5722"
                            StrokeThickness="1"
                            Value="{Binding YPointer}" />
                    </lvc:Axis.Sections>
                    <lvc:Axis.Separator>
                        <lvc:Separator Stroke="#404F56" StrokeDashArray="2" StrokeThickness="1" />
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisY>
            <lvc:CartesianChart.AxisX>
                <!--Name="XAxis"  
                    Title="Time"  X轴的标题
                    LabelFormatter="{Binding DateTimeFormatter}"  标签格式化,将double数据转换成标签格式
                    MaxValue="{Binding AxisMax, Mode=TwoWay}"   X轴最大值
                    MinValue="{Binding AxisMin, Mode=TwoWay}"   X轴最小值
                    Unit="{Binding AxisUnit}"  坐标单位,定义数值与图表位置的比例关系 在时间轴上:通常设置为 TimeSpan.TicksPerSecond-->
                <lvc:Axis
                    Name="XAxis"  
                    Title="Time"
                    LabelFormatter="{Binding DateTimeFormatter}"
                    MaxValue="{Binding AxisMax, Mode=TwoWay}"
                    MinValue="{Binding AxisMin, Mode=TwoWay}"
                    Unit="{Binding AxisUnit}">
                    <lvc:Axis.Sections>
                        <!--这是一个 X轴上的垂直参考线,通常用于显示鼠标位置对应的数据点。-->
                        <!--DataLabel="True"  显示数据标签
                            DataLabelForeground="White"  数据标签的文字颜色为白色
                            DisableAnimations="True"  禁用动画效果
                            Fill="#59FF5722"  半透明橙色填充
                            SectionOffset="-0.5"  位置偏移-0.5
                            SectionWidth="1"   宽度为1
                            Stroke="#ff5722"  实线橙色边框
                            StrokeThickness=".5"  边框线宽0.5
                            Value="{Binding XPointer}" 值bind到X值 -->
                        <lvc:AxisSection
                            DataLabel="True"  
                            DataLabelForeground="White"
                            DisableAnimations="True"
                            Fill="#59FF5722"
                            SectionOffset="-0.5"
                            SectionWidth="1"
                            Stroke="#ff5722"
                            StrokeThickness=".5"
                            Value="{Binding XPointer}" />
                    </lvc:Axis.Sections>
                    <lvc:Axis.Separator>
                        <!--Step : 刻度间隔 --> 
                        <lvc:Separator StrokeThickness="0" Step="{Binding AxisStep}"/>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisX>
        </lvc:CartesianChart>

        <Grid Grid.Row="1">
            <Button Width="100" Height="60" Command="{stylet:Action ChangeSeries}" />
        </Grid>
    </Grid>
</Window>
相关推荐
云草桑4 分钟前
在C# .net中RabbitMQ的核心类型和属性,除了交换机,队列关键的类型 / 属性,影响其行为
c#·rabbitmq·.net·队列
guygg888 分钟前
C#实现的TCP/UDP网络调试助手
网络·tcp/ip·c#
1314lay_100712 小时前
C# 点击一次api,限流中间件但是X-Rate-Limit-Remaining剩余数量减少2
visualstudio·c#
“抚琴”的人13 小时前
C#上位机工厂模式
开发语言·c#
工程师00716 小时前
C#中的AutoUpdater自动更新类
开发语言·c#·自动更新开源库·autoupdate
曹牧17 小时前
C#:Obsolete
开发语言·c#
我是苏苏17 小时前
Web开发:使用C#的System.Drawing.Common将png图片转化为icon图片
开发语言·c#
阿蒙Amon18 小时前
C#每日面试题-is和as的区别
java·开发语言·c#
阿蒙Amon18 小时前
C#每日面试题-简述泛型约束
java·开发语言·c#
1314lay_100719 小时前
C# .Net 7.0 Core添加日志可视化
visualstudio·c#·.net·.netcore