优化LineChartlabel偏移显示

This commit is contained in:
monitor1394
2020-03-11 21:53:45 +08:00
parent 4606d65a5c
commit 702b2a8c24
6 changed files with 67 additions and 26 deletions

View File

@@ -46,5 +46,31 @@ namespace XCharts
return color;
}
}
public static bool IsDownPoint(Serie serie, int index)
{
var dataPoints = serie.dataPoints;
if (dataPoints.Count < 2) return false;
else if (index > 0 && index < dataPoints.Count - 1)
{
var lp = dataPoints[index - 1];
var np = dataPoints[index + 1];
var cp = dataPoints[index];
var dot = Vector3.Cross(np - lp, cp - np);
return dot.z < 0;
}
else if (index == 0)
{
return dataPoints[0].y < dataPoints[1].y;
}
else if (index == dataPoints.Count - 1)
{
return dataPoints[index].y < dataPoints[index - 1].y;
}
else
{
return false;
}
}
}
}

View File

@@ -411,7 +411,13 @@ namespace XCharts
sb.Length = 0;
if (!isCartesian)
{
sb.Append(tempAxis.GetData(index, m_DataZoom));
var category = tempAxis.GetData(index, m_DataZoom);
if (!string.IsNullOrEmpty(category)) sb.Append(category);
else
{
m_Tooltip.SetActive(false);
return;
}
}
for (int i = 0; i < m_Series.Count; i++)
{
@@ -1498,7 +1504,6 @@ namespace XCharts
if (j >= serie.dataPoints.Count) break;
var serieData = serie.data[j];
var pos = serie.dataPoints[j];
serieData.SetGameObjectPosition(serieData.labelPosition);
serieData.UpdateIcon();
if (serie.show && serie.label.show && serieData.canShowLabel)
@@ -1522,7 +1527,8 @@ namespace XCharts
content = serie.label.GetFormatterContent(serie.name, serieData.name, value, total);
}
serieData.SetLabelActive(value != 0 && serieData.labelPosition != Vector3.zero);
serieData.SetLabelPosition(serie.label.offset);
var down = serie.type == SerieType.Line && SerieHelper.IsDownPoint(serie, j);
serieData.SetLabelPosition(down ? -serie.label.offset : serie.label.offset);
if (serieData.SetLabelText(content)) RefreshChart();
}
else