AirControl  1.3.0
Open Source, Modular, and Extensible Flight Simulator For Deep Learning Research
CoordinateChart_API.cs
1 /************************************************/
2 /* */
3 /* Copyright (c) 2018 - 2021 monitor1394 */
4 /* https://github.com/monitor1394 */
5 /* */
6 /************************************************/
7 
8 using System.Collections.Generic;
9 using UnityEngine;
10 
11 namespace XCharts
12 {
18  public partial class CoordinateChart
19  {
24  public Grid grid { get { return m_Grids.Count > 0 ? m_Grids[0] : null; } }
25  public List<Grid> grids { get { return m_Grids; } }
30  public List<XAxis> xAxes { get { return m_XAxes; } }
35  public List<YAxis> yAxes { get { return m_YAxes; } }
36 
40  public XAxis xAxis0 { get { return m_XAxes.Count > 0 ? m_XAxes[0] : null; } }
44  public XAxis xAxis1 { get { return m_XAxes.Count > 1 ? m_XAxes[1] : null; } }
48  public YAxis yAxis0 { get { return m_YAxes.Count > 0 ? m_YAxes[0] : null; } }
52  public YAxis yAxis1 { get { return m_YAxes.Count > 1 ? m_YAxes[1] : null; } }
53 
54 
60  public override void ClearData()
61  {
62  base.ClearData();
63  ClearAxisData();
64  }
65 
71  public override void RemoveData()
72  {
73  base.RemoveData();
74  ClearAxisData();
75  }
76 
81  public void ClearAxisData()
82  {
83  foreach (var axis in m_XAxes)
84  {
85  axis.data.Clear();
86  axis.SetAllDirty();
87  }
88  foreach (var axis in m_YAxes)
89  {
90  axis.data.Clear();
91  axis.SetAllDirty();
92  }
93  }
94 
101  public void AddXAxisData(string category, int xAxisIndex = 0)
102  {
103  var xAxis = GetXAxis(xAxisIndex);
104  if (xAxis != null)
105  {
106  xAxis.AddData(category);
107  }
108  }
109 
117  public void UpdateXAxisData(int index, string category, int xAxisIndex = 0)
118  {
119  var xAxis = GetXAxis(xAxisIndex);
120  if (xAxis != null)
121  {
122  xAxis.UpdateData(index, category);
123  }
124  }
125 
132  public void AddXAxisIcon(Sprite icon, int xAxisIndex = 0)
133  {
134  var xAxis = GetXAxis(xAxisIndex);
135  if (xAxis != null)
136  {
137  xAxis.AddIcon(icon);
138  }
139  }
140 
148  public void UdpateXAxisIcon(int index, Sprite icon, int xAxisIndex = 0)
149  {
150  var xAxis = GetXAxis(xAxisIndex);
151  if (xAxis != null)
152  {
153  xAxis.UpdateIcon(index, icon);
154  }
155  }
156 
163  public void AddYAxisData(string category, int yAxisIndex = 0)
164  {
165  var yAxis = GetYAxis(yAxisIndex);
166  if (yAxis != null)
167  {
168  yAxis.AddData(category);
169  }
170  }
171 
179  public void UpdateYAxisData(int index, string category, int yAxisIndex = 0)
180  {
181  var yAxis = GetYAxis(yAxisIndex);
182  if (yAxis != null)
183  {
184  yAxis.UpdateData(index, category);
185  }
186  }
187 
194  public void AddYAxisIcon(Sprite icon, int yAxisIndex = 0)
195  {
196  var yAxis = GetYAxis(yAxisIndex);
197  if (yAxis != null)
198  {
199  yAxis.AddIcon(icon);
200  }
201  }
202 
209  public void UpdateYAxisIcon(int index, Sprite icon, int yAxisIndex = 0)
210  {
211  var yAxis = GetYAxis(yAxisIndex);
212  if (yAxis != null)
213  {
214  yAxis.UpdateIcon(index, icon);
215  }
216  }
217 
222  public bool IsValue()
223  {
224  foreach (var axis in m_XAxes)
225  {
226  if (axis.show && !axis.IsValue() && !axis.IsLog()) return false;
227  }
228  foreach (var axis in m_YAxes)
229  {
230  if (axis.show && !axis.IsValue() && !axis.IsLog()) return false;
231  }
232  return true;
233  }
234 
238  public bool IsCategory()
239  {
240  foreach (var axis in m_XAxes)
241  {
242  if (axis.show && !axis.IsCategory()) return false;
243  }
244  foreach (var axis in m_YAxes)
245  {
246  if (axis.show && !axis.IsCategory()) return false;
247  }
248  return true;
249  }
250 
254  public bool IsInGrid(Grid grid, Vector2 local)
255  {
256  return IsInGrid(grid, local.x, local.y);
257  }
258 
259  public bool IsInGrid(Grid grid, Vector3 local)
260  {
261  return IsInGrid(grid, local.x, local.y);
262  }
263 
264  public bool IsInGrid(Grid grid, float x, float y)
265  {
266  if (x < grid.runtimeX - 1 || x > grid.runtimeX + grid.runtimeWidth + 1 ||
267  y < grid.runtimeY - 1 || y > grid.runtimeY + grid.runtimeHeight + 1)
268  {
269  return false;
270  }
271  return true;
272  }
273 
274  public bool IsInAnyGrid(Vector2 local)
275  {
276  foreach (var grid in m_Grids)
277  {
278  if (IsInGrid(grid, local)) return true;
279  }
280  return false;
281  }
282 
283  public Grid GetGrid(Vector2 local)
284  {
285  for (int i = 0; i < m_Grids.Count; i++)
286  {
287  var grid = m_Grids[i];
288  grid.index = i;
289  if (IsInGrid(grid, local)) return grid;
290  }
291  return null;
292  }
293 
297  public void RefreshDataZoom()
298  {
299  foreach (var handler in m_ComponentHandlers)
300  {
301  if (handler is DataZoomHandler)
302  {
303  (handler as DataZoomHandler).RefreshDataZoomLabel();
304  }
305  }
306  }
307 
312  {
313  CheckMinMaxValue();
314  }
315 
316  public Vector3 ClampInGrid(Grid grid, Vector3 pos)
317  {
318  if (IsInGrid(grid, pos)) return pos;
319  else
320  {
321  // var pos = new Vector3(pos.x, pos.y);
322  if (pos.x < grid.runtimeX) pos.x = grid.runtimeX;
323  if (pos.x > grid.runtimeX + grid.runtimeWidth) pos.x = grid.runtimeX + grid.runtimeWidth;
324  if (pos.y < grid.runtimeY) pos.y = grid.runtimeY;
325  if (pos.y > grid.runtimeY + grid.runtimeHeight) pos.y = grid.runtimeY + grid.runtimeHeight;
326  return pos;
327  }
328  }
329 
334  public void CovertXYAxis(int index)
335  {
336  if (index >= 0 && index <= 1)
337  {
338  var xAxis = m_XAxes[index];
339  var yAxis = m_YAxes[index];
340  var tempX = m_XAxes[index].Clone();
341  xAxis.Copy(m_YAxes[index]);
342  yAxis.Copy(tempX);
343  xAxis.runtimeZeroXOffset = 0;
344  xAxis.runtimeZeroYOffset = 0;
345  yAxis.runtimeZeroXOffset = 0;
346  yAxis.runtimeZeroYOffset = 0;
347  xAxis.runtimeMinValue = 0;
348  xAxis.runtimeMaxValue = 0;
349  yAxis.runtimeMinValue = 0;
350  yAxis.runtimeMaxValue = 0;
351  RefreshChart();
352  }
353  }
354 
358  public void UpdateCoordinate()
359  {
360  foreach (var grid in m_Grids)
361  {
362  grid.UpdateRuntimeData(m_ChartX, m_ChartY, m_ChartWidth, m_ChartHeight);
363  }
364  foreach (var dataZoom in m_DataZooms)
365  {
366  dataZoom.UpdateRuntimeData(m_ChartX, m_ChartY, m_ChartWidth, m_ChartHeight);
367  }
368  }
369 
373  public void SetMaxCache(int maxCache)
374  {
375  foreach (var serie in m_Series.list) serie.maxCache = maxCache;
376  foreach (var axis in m_XAxes) axis.maxCache = maxCache;
377  foreach (var axis in m_YAxes) axis.maxCache = maxCache;
378  }
379 
380  public Grid GetGrid(int index)
381  {
382  if (index >= 0 && index < m_Grids.Count) return m_Grids[index];
383  else return null;
384  }
385 
386  public XAxis GetXAxis(int index)
387  {
388  if (index >= 0 && index < m_XAxes.Count) return m_XAxes[index];
389  else return null;
390  }
391 
392  public YAxis GetYAxis(int index)
393  {
394  if (index >= 0 && index < m_YAxes.Count) return m_YAxes[index];
395  else return null;
396  }
397  }
398 }
399 
XCharts.CoordinateChart.xAxis0
XAxis? xAxis0
X轴(下)
Definition: CoordinateChart_API.cs:40
XCharts.CoordinateChart.AddYAxisIcon
void AddYAxisIcon(Sprite icon, int yAxisIndex=0)
Add an icon to yAxis. 添加一个图标到指定的y轴。
Definition: CoordinateChart_API.cs:194
XCharts.CoordinateChart.UpdateYAxisData
void UpdateYAxisData(int index, string category, int yAxisIndex=0)
Update category data. 更新Y轴类目数据。
Definition: CoordinateChart_API.cs:179
XCharts.CoordinateChart.UpdateCoordinate
void UpdateCoordinate()
更新坐标系原点和宽高
Definition: CoordinateChart_API.cs:358
XCharts.CoordinateChart.RefreshDataZoom
void RefreshDataZoom()
在下一帧刷新DataZoom
Definition: CoordinateChart_API.cs:297
XCharts.CoordinateChart.RemoveData
override void RemoveData()
Remove all data from series,legend and axis. The series list is also cleared. 清空所有图例,系列和坐标轴类目数据。系列的列表...
Definition: CoordinateChart_API.cs:71
XCharts.CoordinateChart.yAxis0
YAxis? yAxis0
Y轴(左)
Definition: CoordinateChart_API.cs:48
XCharts.CoordinateChart.ClearAxisData
void ClearAxisData()
Remove all data of Axes. 清除所有x轴和y轴的类目数据。
Definition: CoordinateChart_API.cs:81
XCharts.XAxis
The x axis in cartesian(rectangular) coordinate. a grid component can place at most 2 x axis,...
Definition: Axis.cs:960
XCharts.CoordinateChart.UpdateXAxisData
void UpdateXAxisData(int index, string category, int xAxisIndex=0)
Update category data. 更新X轴类目数据。
Definition: CoordinateChart_API.cs:117
XCharts.CoordinateChart.AddXAxisData
void AddXAxisData(string category, int xAxisIndex=0)
Add a category data to xAxis. 添加一个类目数据到指定的x轴。
Definition: CoordinateChart_API.cs:101
XCharts.CoordinateChart.ClearData
override void ClearData()
Remove all data from series,legend and axis. It just emptying all of serie's data without emptying th...
Definition: CoordinateChart_API.cs:60
XCharts
Definition: RewardChart.cs:14
XCharts.CoordinateChart.xAxis1
XAxis? xAxis1
X轴(上)
Definition: CoordinateChart_API.cs:44
XCharts.CoordinateChart.AddYAxisData
void AddYAxisData(string category, int yAxisIndex=0)
Add a category data to yAxis. 添加一个类目数据到指定的y轴。
Definition: CoordinateChart_API.cs:163
XCharts.CoordinateChart.IsValue
bool IsValue()
reutrn true when all the show axis is Value type. 纯数值坐标轴(数值轴或对数轴)。
Definition: CoordinateChart_API.cs:222
XCharts.CoordinateChart.IsInGrid
bool IsInGrid(Grid grid, Vector2 local)
坐标是否在坐标轴内。
Definition: CoordinateChart_API.cs:254
XCharts.CoordinateChart.AddXAxisIcon
void AddXAxisIcon(Sprite icon, int xAxisIndex=0)
Add an icon to xAxis. 添加一个图标到指定的x轴。
Definition: CoordinateChart_API.cs:132
XCharts.CoordinateChart.yAxes
List< YAxis > yAxes
the y Axes, yAxes[0] is the first y axis, yAxes[1] is the second y axis. 两个y轴。
Definition: CoordinateChart_API.cs:35
XCharts.Grid
Grid component. Drawing grid in rectangular coordinate. In a single grid, at most two X and Y axes ea...
Definition: XGrid.cs:25
XCharts.CoordinateChart.SetMaxCache
void SetMaxCache(int maxCache)
设置可缓存的最大数据量。当数据量超过该值时,会自动删除第一个值再加入最新值。
Definition: CoordinateChart_API.cs:373
XCharts.CoordinateChart.CovertXYAxis
void CovertXYAxis(int index)
转换X轴和Y轴的配置
Definition: CoordinateChart_API.cs:334
XCharts.CoordinateChart.yAxis1
YAxis? yAxis1
Y轴(右)
Definition: CoordinateChart_API.cs:52
XCharts.CoordinateChart.UdpateXAxisIcon
void UdpateXAxisIcon(int index, Sprite icon, int xAxisIndex=0)
Update xAxis icon. 更新X轴图标。
Definition: CoordinateChart_API.cs:148
XCharts.YAxis
The x axis in cartesian(rectangular) coordinate. a grid component can place at most 2 x axis,...
Definition: Axis.cs:996
XCharts.CoordinateChart.xAxes
List< XAxis > xAxes
the x Axes,xAxes[0] is the first x axis, xAxes[1] is the second x axis. 两个x轴。
Definition: CoordinateChart_API.cs:30
XCharts.CoordinateChart.IsCategory
bool IsCategory()
纯类目轴。
Definition: CoordinateChart_API.cs:238
XCharts.CoordinateChart.grid
Grid? grid
grid component. 网格组件。
Definition: CoordinateChart_API.cs:24
XCharts.CoordinateChart.UpdateYAxisIcon
void UpdateYAxisIcon(int index, Sprite icon, int yAxisIndex=0)
更新Y轴图标。
Definition: CoordinateChart_API.cs:209
XCharts.CoordinateChart
The basic class of rectangular coordinate chart,such as LineChart,BarChart and ScatterChart....
Definition: CoordinateChart_API.cs:18
XCharts.CoordinateChart.RefreshAxisMinMaxValue
void RefreshAxisMinMaxValue()
立即刷新数值坐标轴的最大最小值
Definition: CoordinateChart_API.cs:311