2017-03-23 311 views
2

我只是找不到解決方案來更改y軸刻度標籤的格式。 現在我得到如0.030.035的標籤。但我總是需要小數點後三位數字。 最大的問題是,如何訪問標籤格式?更改LiveCharts中的軸刻度標籤的格式

這是我的代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Forms; 
using System.Windows.Media; 
using LiveCharts; 
using LiveCharts.Helpers; 
using LiveCharts.Wpf; 
using LiveCharts.Wpf.Charts.Base; 
using Brushes = System.Windows.Media.Brushes; 
using Color = System.Windows.Media.Color; 
using MessageBox = System.Windows.Forms.MessageBox; 

namespace LiveAnalysis 
{ 
    public partial class Form1 : Form 
    { 
     List<DateTime> xvals = new List<DateTime>(); 
     List<double> yvals = new List<double>(); 
     private int _amountValues; 
     private int _startValue; 
     private List<double> _yvalsRange; 

     public Form1() 
     { 
      InitializeComponent(); 

      // event 
      cartesianChart2.DataClick += CartesianChart1OnDataClick; 
      hScrollBar1.ValueChanged += (sender, e) => hScrollBar1_ValueChange(sender, e, hScrollBar1.Value); 

      // get original data 
      using (var db = new Analysis.DataClasses1DataContext()) 
      { 
       var lttResults = db.LttResults; 
       var par1 = 0.0; 
       foreach (var data in lttResults) 
       { 
        if (data.GatewayEventType == 41) 
         par1 = data.FloatValue; 
        if (data.GatewayEventType != 42) continue; 

        var par2 = data.FloatValue; 
        var diff = Math.Round(par1 - par2, 3); 
        yvals.Add(diff); 
        xvals.Add(data.DateTime); 
       } 
      } 

      // chart settings 
      ChartSettings(); 
     } 

     private void ChartSettings() 
     { 
      // performance 
      cartesianChart2.DisableAnimations = true; 
      cartesianChart2.DataTooltip = null; 
      cartesianChart2.Hoverable = false; 

      _startValue = 0; 
      _amountValues = 400; 
      _yvalsRange = yvals.GetRange(_startValue, _startValue + _amountValues); 

      // series setting 
      ScatterSeries scatterSeries1 = new ScatterSeries("Series1"); 
      cartesianChart2.Series.Add(scatterSeries1); 
      scatterSeries1.Values = _yvalsRange.AsChartValues(); 
      scatterSeries1.MaxPointShapeDiameter = 10; 
      scatterSeries1.Title = "Series1"; 

      cartesianChart2.AxisX.Add(new Axis 
      { 
       Name = "xAxis", 
       Title = "DateTime", 
       FontSize = 22, 
       Foreground = System.Windows.Media.Brushes.Black, 
       MinValue = 0, 
       MaxValue = _amountValues, 
      }); 
      cartesianChart2.AxisY.Add(new Axis 
      { 
       Name = "yAxis", 
       Title = "Time difference", 
       FontSize = 22, 
       Foreground = System.Windows.Media.Brushes.Black, 
       MinValue = -0.025, 
       MaxValue = 0.04, 
      }); 
     } 

     private void CartesianChart1OnDataClick(object sender, ChartPoint chartPoint) 
     { 
      label1.Text = [email protected]"You clicked: {chartPoint.X},{chartPoint.Y}"; 
     } 

     private void button2_Click_1(object sender, EventArgs e) 
     { 

     } 

     private void hScrollBar1_ValueChange(object sender, EventArgs e, int value) 
     { 
      RedrawGraph(value); 
     } 

     private void RedrawGraph(int value) 
     { 
      _startValue = value * 10; 
      _yvalsRange = yvals.GetRange(_startValue, _startValue + _amountValues); 
      cartesianChart2.Series[0].Values = _yvalsRange.AsChartValues(); 
      cartesianChart2.AxisX[0].MinValue = _startValue; 
      cartesianChart2.AxisX[0].MaxValue = _startValue + _amountValues; 
     } 
    } 
} 

回答

4

答案是:

Func<double, string> formatFunc = (x) => string.Format("{0:0.000}", x); 

cartesianChart2.AxisY.Add(new Axis 
{ 
    LabelFormatter = formatFunc, 
}); 
+1

尼斯,正要從livecharts文檔鏈接,很高興你找到了! –