BarChart.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using UnityEngine;
  2. namespace XCharts.Runtime
  3. {
  4. /// <summary>
  5. /// Bar chart shows different data through the height of a bar, which is used in rectangular coordinate with at least 1 category axis.
  6. /// || 柱状图(或称条形图)是一种通过柱形的高度(横向的情况下则是宽度)来表现数据大小的一种常用图表类型。
  7. /// </summary>
  8. [AddComponentMenu("XCharts/BarChart", 14)]
  9. [ExecuteInEditMode]
  10. [RequireComponent(typeof(RectTransform))]
  11. [DisallowMultipleComponent]
  12. [HelpURL("https://xcharts-team.github.io/docs/configuration")]
  13. public class BarChart : BaseChart
  14. {
  15. protected override void DefaultChart()
  16. {
  17. EnsureChartComponent<GridCoord>();
  18. EnsureChartComponent<XAxis>();
  19. EnsureChartComponent<YAxis>();
  20. RemoveData();
  21. Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  22. for (int i = 0; i < 5; i++)
  23. {
  24. AddXAxisData("x" + (i + 1));
  25. }
  26. }
  27. /// <summary>
  28. /// default zebra column chart.
  29. /// || 斑马柱状图。
  30. /// </summary>
  31. public void DefaultZebraColumnChart()
  32. {
  33. CheckChartInit();
  34. var serie = GetSerie(0);
  35. if (serie == null) return;
  36. serie.barType = BarType.Zebra;
  37. }
  38. /// <summary>
  39. /// default capsule column chart.
  40. /// || 胶囊柱状图。
  41. /// </summary>
  42. public void DefaultCapsuleColumnChart()
  43. {
  44. CheckChartInit();
  45. var serie = GetSerie(0);
  46. if (serie == null) return;
  47. serie.barType = BarType.Capsule;
  48. }
  49. /// <summary>
  50. /// default grouped column chart.
  51. /// || 默认分组柱状图。
  52. /// </summary>
  53. public void DefaultGroupedColumnChart()
  54. {
  55. CheckChartInit();
  56. Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  57. }
  58. /// <summary>
  59. /// default stacked column chart.
  60. /// || 默认堆叠分组柱状图。
  61. /// </summary>
  62. public void DefaultStackedColumnChart()
  63. {
  64. CheckChartInit();
  65. var serie1 = GetSerie(0);
  66. serie1.stack = "stack1";
  67. var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  68. serie2.stack = "stack1";
  69. }
  70. /// <summary>
  71. /// default percent column chart.
  72. /// || 默认百分比柱状图。
  73. /// </summary>
  74. public void DefaultPercentColumnChart()
  75. {
  76. CheckChartInit();
  77. var serie1 = GetSerie(0);
  78. serie1.stack = "stack1";
  79. serie1.barPercentStack = true;
  80. var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  81. serie2.stack = "stack1";
  82. serie2.barPercentStack = true;
  83. }
  84. /// <summary>
  85. /// default bar chart.
  86. /// || 默认条形图。
  87. /// </summary>
  88. public void DefaultBarChart()
  89. {
  90. CheckChartInit();
  91. CovertColumnToBar(this);
  92. }
  93. /// <summary>
  94. /// default zebra bar chart.
  95. /// || 默认斑马条形图。
  96. /// </summary>
  97. public void DefaultZebraBarChart()
  98. {
  99. CheckChartInit();
  100. var serie = GetSerie(0);
  101. serie.barType = BarType.Zebra;
  102. CovertColumnToBar(this);
  103. }
  104. /// <summary>
  105. /// default capsule bar chart.
  106. /// || 默认胶囊条形图。
  107. /// </summary>
  108. public void DefaultCapsuleBarChart()
  109. {
  110. CheckChartInit();
  111. var serie = GetSerie(0);
  112. serie.barType = BarType.Capsule;
  113. CovertColumnToBar(this);
  114. }
  115. /// <summary>
  116. /// default grouped bar chart.
  117. /// || 默认分组条形图。
  118. /// </summary>
  119. public void DefaultGroupedBarChart()
  120. {
  121. CheckChartInit();
  122. Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  123. CovertColumnToBar(this);
  124. }
  125. /// <summary>
  126. /// default stacked bar chart.
  127. /// || 默认堆叠条形图。
  128. /// </summary>
  129. public void DefaultStackedBarChart()
  130. {
  131. CheckChartInit();
  132. var serie1 = GetSerie(0);
  133. serie1.stack = "stack1";
  134. var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  135. serie2.stack = "stack1";
  136. CovertColumnToBar(this);
  137. }
  138. /// <summary>
  139. /// default percent bar chart.
  140. /// || 默认百分比条形图。
  141. /// </summary>
  142. public void DefaultPercentBarChart()
  143. {
  144. CheckChartInit();
  145. var serie1 = GetSerie(0);
  146. serie1.stack = "stack1";
  147. serie1.barPercentStack = true;
  148. var serie2 = Bar.AddDefaultSerie(this, GenerateDefaultSerieName());
  149. serie2.stack = "stack1";
  150. serie2.barPercentStack = true;
  151. CovertColumnToBar(this);
  152. }
  153. private static void CovertColumnToBar(BarChart chart)
  154. {
  155. chart.ConvertXYAxis(0);
  156. var xAxis = chart.GetChartComponent<XAxis>();
  157. xAxis.axisLine.show = false;
  158. xAxis.axisTick.show = false;
  159. var yAxis = chart.GetChartComponent<YAxis>();
  160. yAxis.axisTick.alignWithLabel = true;
  161. }
  162. }
  163. }