AirControl  1.3.0
Open Source, Modular, and Extensible Flight Simulator For Deep Learning Research
Series.cs
1 /************************************************/
2 /* */
3 /* Copyright (c) 2018 - 2021 monitor1394 */
4 /* https://github.com/monitor1394 */
5 /* */
6 /************************************************/
7 
8 using UnityEngine;
9 using System.Collections.Generic;
10 using System;
11 
12 namespace XCharts
13 {
18  [System.Serializable]
19  public class Series : MainComponent
20  {
21  [SerializeField] protected List<Serie> m_Series;
22  [NonSerialized] private bool m_LabelDirty;
23 
28  public List<Serie> list { get { return m_Series; } }
33  public int Count { get { return m_Series.Count; } }
34  public bool labelDirty { get { return m_LabelDirty; } set { m_LabelDirty = value; } }
35 
36  public static Series defaultSeries
37  {
38  get
39  {
40  var series = new Series
41  {
42  m_Series = new List<Serie>(){new Serie(){
43  show = true,
44  name = "serie1",
45  index = 0
46  }}
47  };
48  return series;
49  }
50  }
51 
52  public override bool vertsDirty
53  {
54  get
55  {
56  if (m_VertsDirty) return true;
57  foreach (var serie in m_Series)
58  {
59  if (serie.vertsDirty) return true;
60  }
61  return false;
62  }
63  }
64 
65  public void SetLabelDirty()
66  {
67  m_LabelDirty = true;
68  }
69 
70  public override void ClearVerticesDirty()
71  {
72  base.ClearVerticesDirty();
73  foreach (var serie in m_Series)
74  {
75  serie.ClearVerticesDirty();
76  }
77  }
78 
79  internal void ClearLabelDirty()
80  {
81  m_LabelDirty = false;
82  foreach (var serie in m_Series)
83  {
84  serie.label.ClearVerticesDirty();
85  }
86  }
87 
88  public override void SetAllDirty()
89  {
90  base.SetAllDirty();
91  SetLabelDirty();
92  }
93 
94  public override void ClearDirty()
95  {
96  base.ClearDirty();
97  ClearLabelDirty();
98  SeriesHelper.ClearNameDirty(this);
99  }
100 
104  public void ClearData()
105  {
106  foreach (var serie in m_Series)
107  {
108  serie.AnimationFadeIn();
109  serie.ClearData();
110  }
111  }
112 
119  public double GetData(int serieIndex, int dataIndex)
120  {
121  if (serieIndex >= 0 && serieIndex < Count)
122  {
123  return m_Series[serieIndex].GetYData(dataIndex);
124  }
125  else
126  {
127  return 0;
128  }
129  }
130 
131  public double GetCurrData(int serieIndex, int dataIndex)
132  {
133  if (serieIndex >= 0 && serieIndex < Count)
134  {
135  return m_Series[serieIndex].GetYCurrData(dataIndex);
136  }
137  else
138  {
139  return 0;
140  }
141  }
142 
148  public Serie GetSerie(string name)
149  {
150  for (int i = 0; i < m_Series.Count; i++)
151  {
152  bool match = false;
153  if (string.IsNullOrEmpty(name))
154  {
155  if (string.IsNullOrEmpty(m_Series[i].name)) match = true;
156  }
157  else if (name.Equals(m_Series[i].name))
158  {
159  match = true;
160  }
161  if (match)
162  {
163  m_Series[i].index = i;
164  return m_Series[i];
165  }
166  }
167  return null;
168  }
169 
175  public List<Serie> GetSeries(string name)
176  {
177  var list = new List<Serie>();
178  if (name == null) return list;
179  foreach (var serie in m_Series)
180  {
181  if (name.Equals(serie.name)) list.Add(serie);
182  }
183  return list;
184  }
185 
191  public Serie GetSerie(int index)
192  {
193  if (index >= 0 && index < m_Series.Count)
194  {
195  return m_Series[index];
196  }
197  return null;
198  }
199 
205  public bool Contains(string name)
206  {
207  for (int i = 0; i < m_Series.Count; i++)
208  {
209  if (name.Equals(m_Series[i].name))
210  {
211  return true;
212  }
213  }
214  return false;
215  }
216 
217  public bool Contains(SerieType type)
218  {
219  foreach (var serie in m_Series)
220  {
221  if (serie.type == type) return true;
222  }
223  return false;
224  }
225 
231  public bool RemoveSerie(string serieName)
232  {
233  var serie = GetSerie(serieName);
234  return RemoveSerie(serie);
235  }
236 
237  public bool RemoveSerie(int serieIndex)
238  {
239  var serie = GetSerie(serieIndex);
240  return RemoveSerie(serie);
241  }
242 
243  public bool RemoveSerie(Serie serie)
244  {
245  if (serie != null && m_Series.Remove(serie))
246  {
247  SetVerticesDirty();
248  return true;
249  }
250  else
251  {
252  return false;
253  }
254  }
255 
260  public void RemoveAll()
261  {
262  foreach(var serie in m_Series) serie.AnimationFadeIn();
263  m_Series.Clear();
264  }
265 
273  public Serie AddSerie(SerieType type, string serieName, bool show = true, bool addToHead = false)
274  {
275  return InsertSerie(-1, type, serieName, show, addToHead);
276  }
277 
278  public Serie InsertSerie(int index, SerieType type, string serieName, bool show = true)
279  {
280  return InsertSerie(index, type, serieName, show, false);
281  }
282 
283  private Serie InsertSerie(int index, SerieType type, string serieName, bool show = true, bool addToHead = false)
284  {
285  var serie = new Serie();
286  serie.type = type;
287  serie.show = show;
288  serie.name = serieName;
289  serie.index = m_Series.Count;
290 
291  if (type == SerieType.Scatter)
292  {
293  serie.symbol.show = true;
294  serie.symbol.type = SerieSymbolType.Circle;
295  }
296  else if (type == SerieType.Line)
297  {
298  serie.symbol.show = true;
299  serie.symbol.type = SerieSymbolType.EmptyCircle;
300  }
301  else
302  {
303  serie.symbol.show = false;
304  }
305  serie.AnimationRestart();
306  if (addToHead) m_Series.Insert(0, serie);
307  else if (index >= 0) m_Series.Insert(index, serie);
308  else m_Series.Add(serie);
309  for (int i = 0; i < m_Series.Count; i++)
310  {
311  m_Series[i].index = i;
312  }
313  SetVerticesDirty();
314  return serie;
315  }
316 
324  public SerieData AddData(string serieName, double value, string dataName = null)
325  {
326  var serie = GetSerie(serieName);
327  if (serie != null)
328  {
329  return serie.AddYData(value, dataName);
330  }
331  return null;
332  }
333 
341  public SerieData AddData(int index, double value, string dataName = null)
342  {
343  var serie = GetSerie(index);
344  if (serie != null)
345  {
346  return serie.AddYData(value, dataName);
347  }
348  return null;
349  }
350 
361  public SerieData AddData(int index, double open, double close, double lowest, double heighest, string dataName = null)
362  {
363  var serie = GetSerie(index);
364  if (serie != null)
365  {
366  return serie.AddData(open, close, lowest, heighest, dataName);
367  }
368  return null;
369  }
370 
371  public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null)
372  {
373  var serie = GetSerie(serieName);
374  if (serie != null)
375  {
376  return serie.AddData(open, close, lowest, heighest, dataName);
377  }
378  return null;
379  }
380 
388  public SerieData AddData(string serieName, List<double> multidimensionalData, string dataName = null)
389  {
390  var serie = GetSerie(serieName);
391  if (serie != null)
392  {
393  return serie.AddData(multidimensionalData, dataName);
394  }
395  return null;
396  }
397 
405  public SerieData AddData(int serieIndex, List<double> multidimensionalData, string dataName = null)
406  {
407  var serie = GetSerie(serieIndex);
408  if (serie != null)
409  {
410  return serie.AddData(multidimensionalData, dataName);
411  }
412  return null;
413  }
414 
423  public SerieData AddXYData(string serieName, double xValue, double yValue, string dataName = null)
424  {
425  var serie = GetSerie(serieName);
426  if (serie != null)
427  {
428  return serie.AddXYData(xValue, yValue, dataName);
429  }
430  return null;
431  }
432 
441  public SerieData AddXYData(int index, double xValue, double yValue, string dataName = null)
442  {
443  var serie = GetSerie(index);
444  if (serie != null)
445  {
446  return serie.AddXYData(xValue, yValue, dataName);
447  }
448  return null;
449  }
450 
457  public bool UpdateData(string serieName, int dataIndex, double value)
458  {
459  var serie = GetSerie(serieName);
460  if (serie != null)
461  {
462  return serie.UpdateYData(dataIndex, value);
463  }
464  return false;
465  }
466 
473  public bool UpdateDataName(string serieName, int dataIndex, string dataName)
474  {
475  var serie = GetSerie(serieName);
476  if (serie != null)
477  {
478  return serie.UpdateDataName(dataIndex, dataName);
479  }
480  return false;
481  }
482 
489  public bool UpdateDataName(int serieIndex, int dataIndex, string dataName)
490  {
491  var serie = GetSerie(serieIndex);
492  if (serie != null)
493  {
494  return serie.UpdateDataName(dataIndex, dataName);
495  }
496  return false;
497  }
498 
505  public bool UpdateData(int serieIndex, int dataIndex, double value)
506  {
507  var serie = GetSerie(serieIndex);
508  if (serie != null)
509  {
510  return serie.UpdateYData(dataIndex, value);
511  }
512  return false;
513  }
514 
515  public bool UpdateData(string serieName, int dataIndex, List<double> values)
516  {
517  var serie = GetSerie(serieName);
518  if (serie != null)
519  {
520  return serie.UpdateData(dataIndex, values);
521  }
522  return false;
523  }
524  public bool UpdateData(int serieIndex, int dataIndex, List<double> values)
525  {
526  var serie = GetSerie(serieIndex);
527  if (serie != null)
528  {
529  return serie.UpdateData(dataIndex, values);
530  }
531  return false;
532  }
533 
541  public bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
542  {
543  var serie = GetSerie(serieIndex);
544  if (serie != null)
545  {
546  return serie.UpdateData(dataIndex, dimension, value);
547  }
548  return false;
549  }
550 
558  public bool UpdateData(string serieName, int dataIndex, int dimension, double value)
559  {
560  var serie = GetSerie(serieName);
561  if (serie != null)
562  {
563  return serie.UpdateData(dataIndex, dimension, value);
564  }
565  return false;
566  }
567 
568 
576  public bool UpdateXYData(string serieName, int dataIndex, float xValue, float yValue)
577  {
578  var serie = GetSerie(serieName);
579  if (serie != null)
580  {
581  return serie.UpdateXYData(dataIndex, xValue, yValue);
582  }
583  return false;
584  }
585 
593  public bool UpdateXYData(int serieIndex, int dataIndex, float xValue, float yValue)
594  {
595  var serie = GetSerie(serieIndex);
596  if (serie != null)
597  {
598  return serie.UpdateXYData(dataIndex, xValue, yValue);
599  }
600  return false;
601  }
602 
607  internal void UpdateFilterData(DataZoom dataZoom)
608  {
609  if (dataZoom != null && dataZoom.enable)
610  {
611  for (int i = 0; i < m_Series.Count; i++)
612  {
613  SerieHelper.UpdateFilterData(m_Series[i], dataZoom);
614  }
615  }
616  }
617 
623  public bool IsActive(string name)
624  {
625  var serie = GetSerie(name);
626  return serie == null ? false : serie.show;
627  }
628 
634  public bool IsActive(int index)
635  {
636  var serie = GetSerie(index);
637  return serie == null ? false : serie.show;
638  }
639 
645  public void SetActive(string name, bool active)
646  {
647  var serie = GetSerie(name);
648  if (serie != null)
649  {
650  serie.show = active;
651  }
652  }
653 
659  public void SetActive(int index, bool active)
660  {
661  var serie = GetSerie(index);
662  if (serie != null)
663  {
664  serie.show = active;
665  serie.AnimationReset();
666  if (active) serie.AnimationFadeIn();
667  }
668  }
669 
675  public bool IsHighlight(int serieIndex)
676  {
677  var serie = GetSerie(serieIndex);
678  if (serie != null) return serie.highlighted;
679  else return false;
680  }
681 
688  {
689  foreach (var serie in m_Series)
690  {
691  serie.symbol.sizeCallback = size;
692  serie.symbol.selectedSizeCallback = selectedSize;
693  }
694  }
695  }
696 }
XCharts.Series.UpdateData
bool UpdateData(int serieIndex, int dataIndex, int dimension, double value)
更新指定系列指定数据项指定维度的数据值
Definition: Series.cs:541
XCharts.Series.AddData
SerieData AddData(int index, double value, string dataName=null)
添加一个数据到指定系列的维度Y中
Definition: Series.cs:341
XCharts.Series.SetActive
void SetActive(int index, bool active)
设置指定系列是否显示
Definition: Series.cs:659
XCharts.Series.GetSerie
Serie GetSerie(int index)
获得指定索引的系列
Definition: Series.cs:191
XCharts.Series.IsHighlight
bool IsHighlight(int serieIndex)
指定系列是否处于高亮选中状态
Definition: Series.cs:675
XCharts.Series.AddData
SerieData AddData(string serieName, double value, string dataName=null)
添加一个数据到指定系列的维度Y数据中
Definition: Series.cs:324
XCharts.DataZoom
DataZoom component is used for zooming a specific area, which enables user to investigate data in det...
Definition: DataZoom.cs:24
XCharts.Series.RemoveAll
void RemoveAll()
Remove all serie from series. 移除所有系列。
Definition: Series.cs:260
XCharts.Series.AddSerie
Serie AddSerie(SerieType type, string serieName, bool show=true, bool addToHead=false)
添加一个系列到列表中。
Definition: Series.cs:273
XCharts.SerieType
SerieType
the type of serie. 系列类型。
Definition: Serie.cs:19
XCharts.Series.SetActive
void SetActive(string name, bool active)
设置指定系列是否显示
Definition: Series.cs:645
XCharts.SymbolSizeCallback
delegate float SymbolSizeCallback(List< double > data)
获取标记大小的回调。
XCharts.Series.UpdateData
bool UpdateData(int serieIndex, int dataIndex, double value)
更新指定系列的维度Y数据项的值
Definition: Series.cs:505
XCharts.MainComponent
Definition: ChartComponent.cs:67
XCharts.Series.AddData
SerieData AddData(int index, double open, double close, double lowest, double heighest, string dataName=null)
添加[open, close, lowest, highest]数据
Definition: Series.cs:361
XCharts.Serie.index
int index
The index of serie,start at 0. 系列的索引,从0开始。
Definition: Serie.cs:1145
XCharts.Series.UpdateData
bool UpdateData(string serieName, int dataIndex, int dimension, double value)
更新指定系列指定数据项指定维度的数据值
Definition: Series.cs:558
XCharts.Series.UpdateXYData
bool UpdateXYData(int serieIndex, int dataIndex, float xValue, float yValue)
更新指定系列的维度X和维度Y数据
Definition: Series.cs:593
XCharts
Definition: RewardChart.cs:14
XCharts.Series.AddXYData
SerieData AddXYData(int index, double xValue, double yValue, string dataName=null)
添加(x,y)数据到指定的系列中
Definition: Series.cs:441
XCharts.Series.UpdateDataName
bool UpdateDataName(string serieName, int dataIndex, string dataName)
更新指定系列的数据项名称
Definition: Series.cs:473
XCharts.Series.Contains
bool Contains(string name)
是否包含指定名字的系列
Definition: Series.cs:205
XCharts.Series.ClearData
void ClearData()
清空所有系列的数据
Definition: Series.cs:104
XCharts.Series.GetSerie
Serie GetSerie(string name)
获得指定系列名的第一个系列
Definition: Series.cs:148
XCharts.Series.list
List< Serie > list
the list of serie 系列列表。
Definition: Series.cs:28
XCharts.Series.UpdateDataName
bool UpdateDataName(int serieIndex, int dataIndex, string dataName)
更新指定系列的数据项名称
Definition: Series.cs:489
XCharts.Series.UpdateXYData
bool UpdateXYData(string serieName, int dataIndex, float xValue, float yValue)
更新指定系列的维度X和维度Y数据
Definition: Series.cs:576
XCharts.Series.AddData
SerieData AddData(int serieIndex, List< double > multidimensionalData, string dataName=null)
添加一组数据到指定的系列中
Definition: Series.cs:405
XCharts.Serie
系列。每个系列通过 type 决定自己的图表类型。
Definition: Serie.cs:261
XCharts.Series
the list of series. 系列列表。每个系列通过 type 决定自己的图表类型。
Definition: Series.cs:19
XCharts.Series.AddData
SerieData AddData(string serieName, List< double > multidimensionalData, string dataName=null)
添加一组数据到指定的系列中
Definition: Series.cs:388
XCharts.Series.UpdateData
bool UpdateData(string serieName, int dataIndex, double value)
更新指定系列的维度Y数据
Definition: Series.cs:457
XCharts.Series.Count
int Count
the size of serie list. 系列个数。
Definition: Series.cs:33
XCharts.SerieSymbolType
SerieSymbolType
the type of symbol. 标记图形的类型。
Definition: SerieSymbol.cs:18
XCharts.Series.IsActive
bool IsActive(int index)
指定系列是否显示
Definition: Series.cs:634
XCharts.DataZoom.enable
bool enable
Whether to show dataZoom. 是否显示缩放区域。
Definition: DataZoom.cs:111
XCharts.Series.AddXYData
SerieData AddXYData(string serieName, double xValue, double yValue, string dataName=null)
添加(x,y)数据到指定的系列中
Definition: Series.cs:423
XCharts.Series.GetData
double GetData(int serieIndex, int dataIndex)
获得指定序列指定索引的数据值
Definition: Series.cs:119
XCharts.Series.RemoveSerie
bool RemoveSerie(string serieName)
Remove serie from series. 移除指定名字的系列。
Definition: Series.cs:231
XCharts.Series.GetSeries
List< Serie > GetSeries(string name)
获得指定系列名的所有系列
Definition: Series.cs:175
XCharts.Series.SetSerieSymbolSizeCallback
void SetSerieSymbolSizeCallback(SymbolSizeCallback size, SymbolSizeCallback selectedSize)
设置获得标志图形大小的回调
Definition: Series.cs:687
XCharts.Series.IsActive
bool IsActive(string name)
指定系列是否显示
Definition: Series.cs:623
XCharts.SerieData
A data item of serie. 系列中的一个数据项。可存储数据名和1-n维的数据。
Definition: SerieData.cs:19