8 using System.Collections.Generic;
13 [AddComponentMenu(
"XCharts/HeatmapChart", 18)]
15 [RequireComponent(typeof(RectTransform))]
16 [DisallowMultipleComponent]
21 protected override void Reset()
24 title.text =
"HeatmapChart";
31 m_XAxes[0].boundaryGap =
true;
33 m_YAxes[0].boundaryGap =
true;
34 m_XAxes[0].splitNumber = 10;
35 m_YAxes[0].splitNumber = 10;
37 var heatmapGridWid = 10f;
38 int xSplitNumber = (int)(
grid.runtimeWidth / heatmapGridWid);
39 int ySplitNumber = (int)(
grid.runtimeHeight / heatmapGridWid);
41 SerieTemplate.AddDefaultHeatmapSerie(
this,
"serie1");
43 visualMap.enable =
true;
45 visualMap.range[0] = 0f;
46 visualMap.range[1] = 10f;
47 visualMap.orient =
Orient.Vertical;
48 visualMap.calculable =
true;
50 visualMap.location.bottom = 100;
51 visualMap.location.left = 30;
52 var colors =
new List<string>{
"#313695",
"#4575b4",
"#74add1",
"#abd9e9",
"#e0f3f8",
"#ffffbf",
53 "#fee090",
"#fdae61",
"#f46d43",
"#d73027",
"#a50026"};
54 visualMap.inRange.Clear();
55 foreach (var str
in colors)
59 for (
int i = 0; i < xSplitNumber; i++)
61 m_XAxes[0].data.Add((i + 1).ToString());
63 for (
int i = 0; i < ySplitNumber; i++)
65 m_YAxes[0].data.Add((i + 1).ToString());
67 for (
int i = 0; i < xSplitNumber; i++)
69 for (
int j = 0; j < ySplitNumber; j++)
72 var rate = Random.Range(0, 101);
73 if (rate > 70) value = Random.Range(8f, 10f);
74 else value = Random.Range(1f, 8f);
75 var list =
new List<double> { i, j, value };
82 protected override void UpdateTooltip()
84 var xData = tooltip.runtimeXValues[0];
85 var yData = tooltip.runtimeYValues[0];
86 if (
IsCategory() && (xData < 0 || yData < 0))
return;
88 for (
int i = 0; i < m_Series.Count; i++)
90 var serie = m_Series.GetSerie(i);
91 var xAxis = m_XAxes[serie.xAxisIndex];
92 var yAxis = m_YAxes[serie.yAxisIndex];
93 var xCount = xAxis.data.Count;
94 var yCount = yAxis.data.Count;
95 if (serie.show && serie.type ==
SerieType.Heatmap)
99 string key = serie.name;
100 var serieData = serie.data[(int)xData * yCount + (
int)yData];
101 var value = serieData.data[2];
102 var color = visualMap.enable ? visualMap.GetColor(value) :
103 m_Theme.GetColor(serie.index);
105 .Append(key).Append(!
string.IsNullOrEmpty(key) ?
"\n" :
"")
106 .Append(
"<color=#").Append(ChartCached.ColorToStr(color)).Append(
">● </color>")
107 .Append(xAxis.data[(
int)xData]).Append(
": ")
108 .Append(ChartCached.FloatToStr(value,
string.Empty));
112 TooltipHelper.SetContentAndPosition(tooltip, sb.ToString().Trim(), chartRect);
113 tooltip.SetActive(
true);
115 for (
int i = 0; i < m_XAxes.Count; i++)
117 UpdateAxisTooltipLabel(i, m_XAxes[i]);
119 for (
int i = 0; i < m_YAxes.Count; i++)
121 UpdateAxisTooltipLabel(i, m_YAxes[i]);