[improve][heatmap] improve heatmap chart

This commit is contained in:
monitor1394
2022-09-02 08:12:57 +08:00
parent 061ac49670
commit 8bd0c23e19
8 changed files with 54 additions and 33 deletions

View File

@@ -241,7 +241,11 @@ namespace XCharts.Runtime
private void UpdateAxisPointerDataIndex(Serie serie, XAxis xAxis, YAxis yAxis, GridCoord grid, bool isTriggerAxis)
{
serie.context.pointerAxisDataIndexs.Clear();
if (yAxis.IsCategory())
if (xAxis.IsCategory() && yAxis.IsCategory())
{
GetSerieDataByXYAxis(serie, xAxis, yAxis);
}
else if (yAxis.IsCategory())
{
if (isTriggerAxis)
{
@@ -277,6 +281,24 @@ namespace XCharts.Runtime
}
}
private void GetSerieDataByXYAxis(Serie serie, Axis xAxis, Axis yAxis)
{
var xAxisIndex = xAxis.context.pointerValue;
var yAxisIndex = yAxis.context.pointerValue;
serie.context.pointerItemDataIndex = -1;
foreach (var serieData in serie.data)
{
var x = serieData.GetData(0);
var y = serieData.GetData(1);
if (xAxisIndex == x && y == yAxisIndex)
{
serie.context.pointerItemDataIndex = serieData.index;
break;
}
}
}
private void GetSerieDataIndexByAxis(Serie serie, Axis axis, GridCoord grid, int dimension = 0)
{
var currValue = 0d;
@@ -418,7 +440,7 @@ namespace XCharts.Runtime
{
var serie = series[i];
serie.context.isTriggerByAxis = isTriggerByAxis;
if (isTriggerByAxis && dataIndex >= 0)
if (isTriggerByAxis && dataIndex >= 0 && serie.context.pointerItemDataIndex < 0)
serie.context.pointerItemDataIndex = dataIndex;
serie.handler.UpdateTooltipSerieParams(dataIndex, showCategory, category,
tooltip.marker, tooltip.itemFormatter, tooltip.numericFormatter,

View File

@@ -81,9 +81,9 @@ namespace XCharts.Runtime
[SerializeField] private SelectedMode m_SelectedMode = SelectedMode.Multiple;
[SerializeField] private int m_SerieIndex = 0;
[SerializeField] private double m_Min = 0;
[SerializeField] private double m_Max = 100;
[SerializeField] private double m_Max = 0;
[SerializeField] private double[] m_Range = new double[2] { 0, 100 };
[SerializeField] private double[] m_Range = new double[2] { 0, 0 };
[SerializeField] private string[] m_Text = new string[2] { "", "" };
[SerializeField] private float[] m_TextGap = new float[2] { 10f, 10f };
[SerializeField] private int m_SplitNumber = 5;
@@ -364,7 +364,8 @@ namespace XCharts.Runtime
{
get
{
if (m_Range[0] < min || m_Range[0] > max) return min;
if (m_Range[0] == 0 && m_Range[1] == 0) return min;
else if (m_Range[0] < min || m_Range[0] > max) return min;
else return m_Range[0];
}
set
@@ -377,6 +378,7 @@ namespace XCharts.Runtime
{
get
{
if (m_Range[0] == 0 && m_Range[1] == 0) return max;
if (m_Range[1] >= m_Range[0] && m_Range[1] < max) return m_Range[1];
else return max;
}

View File

@@ -12,6 +12,8 @@ namespace XCharts.Runtime
public double pointerValue { get; set; }
public bool minDrag { get; internal set; }
public bool maxDrag { get; internal set; }
public double min { get; set; }
public double max { get; set; }
internal List<Color32> inRangeColors = new List<Color32>();

View File

@@ -177,15 +177,13 @@ namespace XCharts.Runtime
return true;
}
public static int GetDimension(VisualMap visualMap, int serieDataCount)
public static int GetDimension(VisualMap visualMap, int defaultDimension)
{
var dimension = visualMap != null && visualMap.dimension >= 0 ?
visualMap.dimension : serieDataCount - 1;
if (visualMap == null || !visualMap.show)
return defaultDimension;
if (dimension > serieDataCount - 1)
dimension = serieDataCount - 1;
return dimension;
return visualMap != null && visualMap.dimension >= 0 ?
visualMap.dimension : defaultDimension;
}
}
}