LiveCharts文档-语言3发端-3类型和安装

LiveCharts文档-3伊始-3类型和安装

不知不觉中在蜂桶的山坳间发现了那尊大熊猫雕塑。她好像平静,但丝丝苦意却透露眼角,她完全处于一种无法用言语来讲述的那种痛痛的讨论中——

品种和装置

这一有些越发的第三涉及到LiveCharts的主干构成单元的牵线
LiveChart可以绘制任何项目,甚至是自定义的类型,且不丢掉强类型语言的裨益,原理很简短,当您传递1个泛型集合的时候,LiveChart会拉取X和Y值(笛CarlChart),你不须要定义每种门类来绘制它。库已经了解怎么绘制,double,int,decimal,short
,float,long还有其他尤其部署的种类,ObservableCollection,ObservablePoint,ScatterPoint,DateTimePoint,HeatPoint,OHLPoint,PolarPoint.所以的这一个品种都足以在性质改变的时候通告chart举办更新,上面的例子就动用了那些项目,你也足以友善定义本身须求的品种。

var doubleValues = new ChartValues<double> { 1, 2 ,3 };
var intValues = new ChartValues<int> { 1, 2 ,3 };

//the observable value class is really helpful, it notifies the chart to update
//every time the ObservableValue.Value property changes
var observableValues = new ChartValues<LiveCharts.Defaults.ObservableValue> 
{ 
    new LiveCharts.Defaults.ObservableValue(1), //initializes Value property as 1
    new LiveCharts.Defaults.ObservableValue(2),
    new LiveCharts.Defaults.ObservableValue(3)
};

你可以小心到,chart总是使用X,Y坐标来绘制(笛Carl坐标系),可是一个组double,int,long值库也可以绘制是怎么三回事?
很粗略,X是那组数组当中的index,Y就是你传递的值。当然,那只是您选择横向系列的时候是那般,假如您使用纵向种类,那么X就是传递的值,Y就是Index。

var myValues = new LiveCharts.ChartValues<double>
{
  10, //index 0
  6,  //index 1
  9,  //index 2
  2,  //index 3
  7   //index 4
}

事实上的坐标是:
语言 1

业已定义了拉取坐标的布置:
横向坐标:

new CartesianMapper<double>()
  .X((value, index) => index) //use the index as X
  .Y((value, index) => value) //use the value as Y

纵向坐标:

new CartesianMapper<double>()
  .X((value, index) => value) //use the value as X
  .Y((value, index) => index) //use the index as Y

X和Y只是对于笛卡尔Chart有要求,可是当你想要绘制五个雷达图(半径和角度)大概金融Chart的时候,该怎么布局?所以自个儿创造了2个Mappers类型,那些体系会回到二个正确mapper的实例,有成千成万摘取,Xy,Financial,Bubble和Polar,上边的mappers将会被替代为:

Mappers.Xy<double>()
  .X((value, index) => index) //use the index as X
  .Y((value, index) => value) //use the value as Y

上边是多重mappers,那几个是依照你的状态来设定的。

//X and Y
var mapper = Mappers.Xy<ObservablePoint>() //in this case value is of type <ObservablePoint>
    .X(value => value.X) //use the X property as X
    .Y(value => value.Y); //use the Y property as Y

//X, Y and Weight
var mapper = Mappers.Bubble<BubblePoint>()
                .X(value => value.X)
                .Y(value => value.Y)
                .Weight(value => value.Weight);

//Angle and Radius
var mapper = Mappers.Polar<PolarPoint>()
    .Radius(value => value.Radius) //use the radius property as radius for the plotting
    .Angle(value => value.Angle); //use the angle property as angle for the plotting

//Open, High, Low and Close
var mapper = Mappers.Financial<OhlcPoint>()
                .X((value, index) => index)
                .Open(value => value.Open)
                .High(value => value.High)
                .Low(value => value.Low)
                .Close(value => value.Close);

你可以通过三种方法设定mappers:
1.Global级别
那种办法在你的应用程序级别保存设置,每回LiveCharts检查Chart
Values实例中的类型的时候,它都会采取这一个mapper,除非SeriesCollection
mapper和Series mapper是null。

var mapper1 = Mappers.Xy<int>()
  .X((value, index) => index) 
  .Y(value => value);
LiveCharts.Charting.For<int>(mapper1, SeriesOrientation.Horizontal); //when horizontal

var mapper2 = Mappers.Xy<int>()
  .X(value => value) //use the value (int) as X
  .Y((value, index) => index);
LiveCharts.Charting.For<int>(mapper2, SeriesOrientation.Vertical); //when vertical

其余1个例子就是自定义类型,ObseravableCollection类只含有三个属性,X和Y,请留心这一次本人给横向和纵向使用了一致的安装,并不曾传递第二个参数。

For<ObservablePoint>(Mappers.Xy<ObservablePoint>()
  .X((value, index) => value.X) 
  .Y(value => value.Y));`

如果这一个还不是很清楚,可以去源码里找到更加多细节。
2.Series Collection级别
但当你定义3个Series
Collection的时候,你也可以传递七个暗许的配置,这几个布局将会覆盖掉全局配置,除非Series级其余安顿是null。

var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var seriesCollection = new SeriesCollection(mapper);
myChart.SeriesCollection = seriesCollection;

3.特定的Series级别
末段,若是只是为着设定3个Series,你可以定义一个一定的mapper用于它,这几个配置会覆盖掉Global和Series
Collection级其他配备。

var mapper = Mappers.Xy<MyClass>().X(v => v.XProp).Y(v => v.YProp);
var pieSeries = new PieSeries(mapper);

绝大多数人普遍有一个错误的认识,认为第一个意识大熊猫的人是西班牙人阿尔芒·大卫(法国传教士,受法国首都本来历史博物馆派出到中国收集动植物标本)。那个结论其实是十分荒唐的,是不堪推敲的,难道中国没人了呢?可知当阿尔芒·大卫这几个西方人率先次目睹大熊猫时,他那种无比欢愉的精神状态大家早就不能想见了,但她起码忽略了中中原人与大熊猫几千年来协调共存的那段历史了。那里一时不论这种违背逻辑的缘起,只是可以肯定地说,从那些时刻的节点上看,中国熊猫的形象第二遍跨出了国门,而且是专擅地偷运出国的。

公告Chart自动更新

你可以兑现IObservableChartPoint接口,从而完成当自定义类型的品质改变的时候,Chart会自动进行更新。下3个事例你将汇合到
ObservableValue类型的定义,看看它是怎么在Value改变的时候布告Chart改变的。这么些很好明白,你只必要每一趟在设定Value属性的值的时候,触发一个PointChanged事件就足以了。

public class ObservableValue : IObservableChartPoint
{
    private double _value;
    public ObservableValue()
    {

    }

    public ObservableValue(double value)
    {
        Value = value;
    }

   public event Action PointChanged;
   public double Value
   {
       get { return _value; }
       set
       {
           _value = value;
           OnPointChanged();
       }
   }

   protected void OnPointChanged()
   {
       if (PointChanged != null) PointChanged.Invoke();
   }
}

本节内容完

考虑中的大熊猫

从第3只大熊猫离开宝兴后的一百多年间,大熊猫作为国宝已经遍及世界各州。听说在随处繁育的大猫熊,有百分之八十的基因与宝兴有关。然则,在热衷大熊猫的一波又一波的浪潮声中,宝兴人民为维护大熊猫所付出的不竭及进献,又有多少人清楚吗?老天好像开了贰个很大玩笑——大熊猫故乡的猫熊因输出而不息削减,剩下的都以些老弱病残和留守孩子。

当黑板成为居家装饰

追忆一首呼吸的诗

世界最高的擂台格斗——“环球空中擂台赛”

三圣上婆说

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图