LiveCharts.Wpf 的使用
首先,隨便創建一個 WPF 項目,然后使用 NuGet 安裝 LiveCharts.Wpf
在 XAML 中導入命名空間
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
基本框架
<lvc:CartesianChart>
<!-- X 軸 -->
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="" ShowLabels="" Labels="" LabelsRotation="">
<lvc:Axis.Separator>
<lvc:Separator Step=""/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<!-- Y 軸 -->
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="" MinValue="" MaxValue="" ShowLabels="" Labels="" LabelsRotation="">
<lvc:Axis.Separator>
<lvc:Separator Step=""/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<!-- 圖表類型 -->
<lvc:CartesianChart.Series>
<lvc:xxxSeries DataLabels="" Stroke="" Values="">
<!-- 填充顏色,可以使用漸變色 -->
<lvc:xxxSeries.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="" Offset="0"/>
<GradientStop Color="" Offset="1"/>
</LinearGradientBrush>
</lvc:xxxSeries.Fill>
</lvc:xxxSeries>
</lvc:CartesianChart.Series>
<!-- 圖例中的圓點尺寸,圖例默認需要鼠標瞄到圖標才顯示,可以用 StackPanel 手動設置圖例樣式,這樣就可以顯示在圖表旁邊了-->
<lvc:CartesianChart.ChartLegend>
<lvc:DefaultLegend BulletSize=""/>
</lvc:CartesianChart.ChartLegend>
</lvc:CartesianChart>
lvc:Axis
:
MinValue
和MaxValue
:設置圖表顯示的數據范圍,可以不設置,可以靠Step
和坐標系數的個數決定ShowLabels
和Labels
:是否顯示 X 或 Y 軸的系數,Labels 就是坐標系數LabelsRotation
:是坐標軸上系數的旋轉角度Title
:坐標軸的標題
lvc:Axis.Separator
:
lvc:Separator Step=""
:這個就是設置設置兩個坐標系數之間的數據差距lvc:Separator StrokeDashArray=""
:分割線虛線間隔,一般不設置
lvc:CartesianChart.Series
:
DataLabels
:是否在坐標上顯示具體數據LabelsPosition
:設置DataLabels
顯示的位置,一般不用寫,也不一定有這個屬性Values
:數據的集合
柱狀圖
柱狀圖的類型是 ColumnSeries
<lvc:CartesianChart Margin="10" FontWeight="Bold" FontSize="16">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="X軸" ShowLabels="True" Labels="1,2,3,4,5" LabelsRotation="0">
<lvc:Axis.Separator>
<lvc:Separator Step="1"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Y軸" MinValue="0" MaxValue="5" ShowLabels="True" Labels="0,1,2,3,4,5" LabelsRotation="0">
<lvc:Axis.Separator>
<lvc:Separator Step="1"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.Series>
<lvc:ColumnSeries DataLabels="True" Stroke="Red" Values="2,3,1,5,4">
<lvc:ColumnSeries.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="Orange" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</lvc:ColumnSeries.Fill>
</lvc:ColumnSeries>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
效果圖
折線圖
折線圖的類型是LineSeries
<lvc:CartesianChart Margin="10" FontWeight="Bold" FontSize="16">
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="X軸" ShowLabels="True" Labels="1,2,3,4,5" LabelsRotation="0">
<lvc:Axis.Separator>
<lvc:Separator Step="1"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Y軸" MinValue="0" MaxValue="5" ShowLabels="True" Labels="0,1,2,3,4,5" LabelsRotation="0">
<lvc:Axis.Separator>
<lvc:Separator Step="1"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.Series>
<lvc:LineSeries DataLabels="True" Stroke="Red" Values="2,3,1,5,4">
<lvc:LineSeries.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="Orange" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</lvc:LineSeries.Fill>
</lvc:LineSeries>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
效果圖
進度環
進度環的類型是Gauge
<lvc:Gauge Width="200" Height="200" From="0" To="100" InnerRadius="50" Value="60" Uses360Mode="True" GaugeBackground="Orange" HighFontSize="32">
<lvc:Gauge.GaugeRenderTransform>
<TransformGroup>
<RotateTransform Angle="90"/>
<ScaleTransform ScaleX="1"/>
</TransformGroup>
</lvc:Gauge.GaugeRenderTransform>
<lvc:Gauge.GaugeActiveFill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Blue" Offset="1"/>
</LinearGradientBrush>
</lvc:Gauge.GaugeActiveFill>
</lvc:Gauge>
InnerRadius
:這個是指餅狀圖中間的圓的半徑,0 就是沒有Uses360Mode
:是否使用完整的圓,默認是 false ,表示半圓GaugeBackground
:圓環背景顏色HighFontSize
:中間數字大小From
和To
:最小值和最大值RotateTransform
:相對於默認情況下的旋轉角度ScaleTransform
:大小變換,ScaleX
可以為負數,這樣旋轉方向就會改變,默認順時針GaugeActiveFill
:填充顏色,可以用漸變色
效果圖
餅狀圖
餅狀圖的類型是PieChart
<lvc:PieChart InnerRadius="50" Width="200" Height="200">
<lvc:PieChart.Series>
<lvc:PieSeries Values="1" Fill="Red" DataLabels="True" Title="紅色"/>
<lvc:PieSeries Values="2" Fill="Green" DataLabels="True" Title="綠色"/>
<lvc:PieSeries Values="3" Fill="Blue" DataLabels="True" Title="藍色"/>
</lvc:PieChart.Series>
</lvc:PieChart>
效果圖
行圖
行圖的類型是RowSeries
,X軸和Y軸的處理方式與柱狀圖相反
<lvc:CartesianChart>
<lvc:CartesianChart.AxisX>
<lvc:Axis MinValue="0" MaxValue="5" ShowLabels="True" Labels="0,1,2,3,4,5">
<lvc:Axis.Separator>
<lvc:Separator Stroke="Red" StrokeDashArray="10"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis MinValue="0" MaxValue="5" ShowLabels="True" Labels="01,2,3,4,5">
<lvc:Axis.Separator>
<lvc:Separator Stroke="Green" StrokeDashArray="10"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.Series>
<lvc:RowSeries DataLabels="True" LabelsPosition="Parallel" Values="2,3,1,5,4" Fill="Orange"/>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
效果圖
注意:行圖可以生成甘特圖,只需要將Values
的類型要改成ChartValues<GanttPoint>
,我就懶得寫了
柱狀堆積圖
柱狀堆積圖的類型是``````
<lvc:CartesianChart>
<lvc:CartesianChart.AxisX>
<lvc:Axis Title="X軸" ShowLabels="True" Labels="1,2,3,4,5">
<lvc:Axis.Separator>
<lvc:Separator Step="1" StrokeDashArray="10"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisX>
<lvc:CartesianChart.AxisY>
<lvc:Axis Title="Y軸" MinValue="0" MaxValue="5" ShowLabels="True" Labels="0,1,2,3,4,5">
<lvc:Axis.Separator>
<lvc:Separator Step="1" StrokeDashArray="10"/>
</lvc:Axis.Separator>
</lvc:Axis>
</lvc:CartesianChart.AxisY>
<lvc:CartesianChart.Series>
<lvc:StackedColumnSeries Fill="Red" Title="紅色" Values="1,1,3,2,1">
</lvc:StackedColumnSeries>
<lvc:StackedColumnSeries Fill="Green" Title="綠色" Values="1,2,1,1,2">
</lvc:StackedColumnSeries>
<lvc:StackedColumnSeries Fill="Blue" Title="藍色" Values="1,2,3,1,2">
</lvc:StackedColumnSeries>
</lvc:CartesianChart.Series>
</lvc:CartesianChart>
效果圖