No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Example10_LineChart.cs 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. using System.Collections;
  2. using UnityEngine;
  3. using XCharts.Runtime;
  4. namespace XCharts.Example
  5. {
  6. [DisallowMultipleComponent]
  7. public class Example10_LineChart : MonoBehaviour
  8. {
  9. private LineChart chart;
  10. private Serie serie;
  11. private int m_DataNum = 8;
  12. private void OnEnable()
  13. {
  14. StartCoroutine(PieDemo());
  15. }
  16. IEnumerator PieDemo()
  17. {
  18. while (true)
  19. {
  20. StartCoroutine(AddSimpleLine());
  21. yield return new WaitForSeconds(2);
  22. StartCoroutine(ChangeLineType());
  23. yield return new WaitForSeconds(8);
  24. StartCoroutine(LineAreaStyleSettings());
  25. yield return new WaitForSeconds(5);
  26. StartCoroutine(LineArrowSettings());
  27. yield return new WaitForSeconds(2);
  28. StartCoroutine(LineSymbolSettings());
  29. yield return new WaitForSeconds(7);
  30. StartCoroutine(LineLabelSettings());
  31. yield return new WaitForSeconds(3);
  32. StartCoroutine(LineMutilSerie());
  33. yield return new WaitForSeconds(5);
  34. }
  35. }
  36. IEnumerator AddSimpleLine()
  37. {
  38. chart = gameObject.GetComponent<LineChart>();
  39. if (chart == null) chart = gameObject.AddComponent<LineChart>();
  40. chart.GetChartComponent<Title>().text = "LineChart - 折线图";
  41. chart.GetChartComponent<Title>().subText = "普通折线图";
  42. var yAxis = chart.GetChartComponent<YAxis>();
  43. yAxis.minMaxType = Axis.AxisMinMaxType.Custom;
  44. yAxis.min = 0;
  45. yAxis.max = 100;
  46. chart.RemoveData();
  47. serie = chart.AddSerie<Line>("Line");
  48. for (int i = 0; i < m_DataNum; i++)
  49. {
  50. chart.AddXAxisData("x" + (i + 1));
  51. chart.AddData(0, UnityEngine.Random.Range(30, 90));
  52. }
  53. yield return new WaitForSeconds(1);
  54. }
  55. IEnumerator ChangeLineType()
  56. {
  57. chart.GetChartComponent<Title>().subText = "LineTyle - 曲线图";
  58. serie.lineType = LineType.Smooth;
  59. chart.RefreshChart();
  60. yield return new WaitForSeconds(1);
  61. chart.GetChartComponent<Title>().subText = "LineTyle - 阶梯线图";
  62. serie.lineType = LineType.StepStart;
  63. chart.RefreshChart();
  64. yield return new WaitForSeconds(1);
  65. serie.lineType = LineType.StepMiddle;
  66. chart.RefreshChart();
  67. yield return new WaitForSeconds(1);
  68. serie.lineType = LineType.StepEnd;
  69. chart.RefreshChart();
  70. yield return new WaitForSeconds(1);
  71. chart.GetChartComponent<Title>().subText = "LineTyle - 虚线";
  72. serie.lineStyle.type = LineStyle.Type.Dashed;
  73. chart.RefreshChart();
  74. yield return new WaitForSeconds(1);
  75. chart.GetChartComponent<Title>().subText = "LineTyle - 点线";
  76. serie.lineStyle.type = LineStyle.Type.Dotted;
  77. chart.RefreshChart();
  78. yield return new WaitForSeconds(1);
  79. chart.GetChartComponent<Title>().subText = "LineTyle - 点划线";
  80. serie.lineStyle.type = LineStyle.Type.DashDot;
  81. chart.RefreshChart();
  82. yield return new WaitForSeconds(1);
  83. chart.GetChartComponent<Title>().subText = "LineTyle - 双点划线";
  84. serie.lineStyle.type = LineStyle.Type.DashDotDot;
  85. chart.RefreshChart();
  86. serie.lineType = LineType.Normal;
  87. chart.RefreshChart();
  88. }
  89. IEnumerator LineAreaStyleSettings()
  90. {
  91. chart.GetChartComponent<Title>().subText = "AreaStyle 面积图";
  92. serie.AddExtraComponent<AreaStyle>();
  93. serie.areaStyle.show = true;
  94. chart.RefreshChart();
  95. yield return new WaitForSeconds(1f);
  96. chart.GetChartComponent<Title>().subText = "AreaStyle 面积图";
  97. serie.lineType = LineType.Smooth;
  98. serie.areaStyle.show = true;
  99. chart.RefreshChart();
  100. yield return new WaitForSeconds(1f);
  101. chart.GetChartComponent<Title>().subText = "AreaStyle 面积图 - 调整透明度";
  102. while (serie.areaStyle.opacity > 0.4)
  103. {
  104. serie.areaStyle.opacity -= 0.6f * Time.deltaTime;
  105. chart.RefreshChart();
  106. yield return null;
  107. }
  108. yield return new WaitForSeconds(1);
  109. chart.GetChartComponent<Title>().subText = "AreaStyle 面积图 - 渐变";
  110. serie.areaStyle.toColor = Color.white;
  111. chart.RefreshChart();
  112. yield return new WaitForSeconds(1);
  113. }
  114. IEnumerator LineArrowSettings()
  115. {
  116. chart.GetChartComponent<Title>().subText = "LineArrow 头部箭头";
  117. chart.GetSerie(0).AddExtraComponent<LineArrow>();
  118. serie.lineArrow.show = true;
  119. serie.lineArrow.position = LineArrow.Position.Start;
  120. chart.RefreshChart();
  121. yield return new WaitForSeconds(1);
  122. chart.GetChartComponent<Title>().subText = "LineArrow 尾部箭头";
  123. serie.lineArrow.position = LineArrow.Position.End;
  124. chart.RefreshChart();
  125. yield return new WaitForSeconds(1);
  126. serie.lineArrow.show = false;
  127. }
  128. /// <summary>
  129. /// SerieSymbol 相关设置
  130. /// </summary>
  131. /// <returns></returns>
  132. IEnumerator LineSymbolSettings()
  133. {
  134. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记";
  135. while (serie.symbol.size < 5)
  136. {
  137. serie.symbol.size += 2.5f * Time.deltaTime;
  138. chart.RefreshChart();
  139. yield return null;
  140. }
  141. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 空心圆";
  142. yield return new WaitForSeconds(1);
  143. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 实心圆";
  144. serie.symbol.type = SymbolType.Circle;
  145. chart.RefreshChart();
  146. yield return new WaitForSeconds(1);
  147. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 三角形";
  148. serie.symbol.type = SymbolType.Triangle;
  149. chart.RefreshChart();
  150. yield return new WaitForSeconds(1);
  151. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 正方形";
  152. serie.symbol.type = SymbolType.Rect;
  153. chart.RefreshChart();
  154. yield return new WaitForSeconds(1);
  155. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记 - 菱形";
  156. serie.symbol.type = SymbolType.Diamond;
  157. chart.RefreshChart();
  158. yield return new WaitForSeconds(1);
  159. chart.GetChartComponent<Title>().subText = "SerieSymbol 图形标记";
  160. serie.symbol.type = SymbolType.EmptyCircle;
  161. chart.RefreshChart();
  162. yield return new WaitForSeconds(1);
  163. }
  164. /// <summary>
  165. /// SerieLabel相关配置
  166. /// </summary>
  167. /// <returns></returns>
  168. IEnumerator LineLabelSettings()
  169. {
  170. chart.GetChartComponent<Title>().subText = "SerieLabel 文本标签";
  171. serie.AddExtraComponent<LabelStyle>();
  172. chart.RefreshChart();
  173. while (serie.label.offset[1] < 20)
  174. {
  175. serie.label.offset = new Vector3(serie.label.offset.x, serie.label.offset.y + 20f * Time.deltaTime);
  176. chart.RefreshChart();
  177. yield return null;
  178. }
  179. yield return new WaitForSeconds(1);
  180. chart.RefreshChart();
  181. yield return new WaitForSeconds(1);
  182. serie.label.textStyle.color = Color.white;
  183. serie.label.background.color = Color.grey;
  184. serie.labelDirty = true;
  185. chart.RefreshChart();
  186. yield return new WaitForSeconds(1);
  187. serie.label.show = false;
  188. chart.RefreshChart();
  189. }
  190. /// <summary>
  191. /// 添加多条线图
  192. /// </summary>
  193. /// <returns></returns>
  194. IEnumerator LineMutilSerie()
  195. {
  196. chart.GetChartComponent<Title>().subText = "多系列";
  197. var serie2 = chart.AddSerie<Line>("Line2");
  198. serie2.lineType = LineType.Normal;
  199. for (int i = 0; i < m_DataNum; i++)
  200. {
  201. chart.AddData(1, UnityEngine.Random.Range(30, 90));
  202. }
  203. yield return new WaitForSeconds(1);
  204. var serie3 = chart.AddSerie<Line>("Line3");
  205. serie3.lineType = LineType.Normal;
  206. for (int i = 0; i < m_DataNum; i++)
  207. {
  208. chart.AddData(2, UnityEngine.Random.Range(30, 90));
  209. }
  210. yield return new WaitForSeconds(1);
  211. var yAxis = chart.GetChartComponent<YAxis>();
  212. yAxis.minMaxType = Axis.AxisMinMaxType.Default;
  213. chart.GetChartComponent<Title>().subText = "多系列 - 堆叠";
  214. serie.stack = "samename";
  215. serie2.stack = "samename";
  216. serie3.stack = "samename";
  217. chart.RefreshChart();
  218. yield return new WaitForSeconds(1);
  219. }
  220. }
  221. }