优化Axis.minMaxType的显示

This commit is contained in:
monitor1394
2019-06-20 09:39:39 +08:00
parent 7fc8503714
commit 499275a93d
3 changed files with 43 additions and 57 deletions

View File

@@ -33,7 +33,7 @@ namespace XCharts
{ {
var stackSeries = m_Series.GetStackSeries(); var stackSeries = m_Series.GetStackSeries();
int seriesCount = stackSeries.Count; int seriesCount = stackSeries.Count;
float scaleWid = m_YAxis.GetDataWidth(coordinateHig,m_DataZoom); float scaleWid = m_YAxis.GetDataWidth(coordinateHig, m_DataZoom);
float barWid = m_Bar.barWidth > 1 ? m_Bar.barWidth : scaleWid * m_Bar.barWidth; float barWid = m_Bar.barWidth > 1 ? m_Bar.barWidth : scaleWid * m_Bar.barWidth;
float offset = m_Bar.inSameBar ? float offset = m_Bar.inSameBar ?
(scaleWid - barWid - m_Bar.space * (seriesCount - 1)) / 2 : (scaleWid - barWid - m_Bar.space * (seriesCount - 1)) / 2 :
@@ -61,7 +61,8 @@ namespace XCharts
float pX = seriesCurrHig[i] + zeroX + m_Coordinate.tickness; float pX = seriesCurrHig[i] + zeroX + m_Coordinate.tickness;
float pY = coordinateY + i * scaleWid; float pY = coordinateY + i * scaleWid;
if (!m_YAxis.boundaryGap) pY -= scaleWid / 2; if (!m_YAxis.boundaryGap) pY -= scaleWid / 2;
float barHig = value / (maxValue - minValue) * coordinateWid; float barHig = (minValue > 0 ? value - minValue : value)
/ (maxValue - minValue) * coordinateWid;
float space = m_Bar.inSameBar ? offset : float space = m_Bar.inSameBar ? offset :
offset + j * (barWid + m_Bar.space); offset + j * (barWid + m_Bar.space);
seriesCurrHig[i] += barHig; seriesCurrHig[i] += barHig;
@@ -141,7 +142,8 @@ namespace XCharts
float pX = zeroX + i * scaleWid; float pX = zeroX + i * scaleWid;
if (!m_XAxis.boundaryGap) pX -= scaleWid / 2; if (!m_XAxis.boundaryGap) pX -= scaleWid / 2;
float pY = seriesCurrHig[i] + zeroY + m_Coordinate.tickness; float pY = seriesCurrHig[i] + zeroY + m_Coordinate.tickness;
float barHig = value / (maxValue - minValue) * coordinateHig; float barHig = (minValue > 0 ? value - minValue : value)
/ (maxValue - minValue) * coordinateHig;
seriesCurrHig[i] += barHig; seriesCurrHig[i] += barHig;
float space = m_Bar.inSameBar ? offset : float space = m_Bar.inSameBar ? offset :
offset + j * (barWid + m_Bar.space); offset + j * (barWid + m_Bar.space);

View File

@@ -376,58 +376,39 @@ namespace XCharts
{ {
m_Series.GetMinMaxValue(m_DataZoom, out tempMinValue, out tempMaxValue); m_Series.GetMinMaxValue(m_DataZoom, out tempMinValue, out tempMaxValue);
} }
if (m_XAxis.type == Axis.AxisType.Value) Axis axis;
if (m_XAxis.type == Axis.AxisType.Value) axis = m_XAxis;
else axis = m_YAxis;
switch (axis.minMaxType)
{ {
switch (m_XAxis.minMaxType) case Axis.AxisMinMaxType.Default:
{ if (tempMinValue > 0 && tempMaxValue > 0)
case Axis.AxisMinMaxType.Default: {
if (tempMinValue > 0 && tempMaxValue > 0) tempMinValue = 0;
{ tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue);
tempMinValue = 0; }
tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue); else if (tempMinValue < 0 && tempMaxValue < 0)
} {
else if (tempMinValue < 0 && tempMaxValue < 0) tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue);
{ tempMaxValue = 0;
tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue); }
tempMaxValue = 0; else
} {
break;
case Axis.AxisMinMaxType.MinMax:
tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue); tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue);
tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue); tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue);
break; }
case Axis.AxisMinMaxType.Custom: break;
if (m_XAxis.min != 0) tempMinValue = m_XAxis.min; case Axis.AxisMinMaxType.MinMax:
if (m_XAxis.max != 0) tempMaxValue = m_XAxis.max; tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue);
break; tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue);
} break;
} case Axis.AxisMinMaxType.Custom:
else if (m_YAxis.type == Axis.AxisType.Value) if (axis.min != 0 || axis.max != 0)
{ {
switch (m_YAxis.minMaxType) tempMinValue = axis.min;
{ tempMaxValue = axis.max;
case Axis.AxisMinMaxType.Default: }
if (tempMinValue > 0 && tempMaxValue > 0) break;
{
tempMinValue = 0;
tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue);
}
else if (tempMinValue < 0 && tempMaxValue < 0)
{
tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue);
tempMaxValue = 0;
}
break;
case Axis.AxisMinMaxType.MinMax:
tempMinValue = ChartHelper.GetMinDivisibleValue(tempMinValue);
tempMaxValue = ChartHelper.GetMaxDivisibleValue(tempMaxValue);
break;
case Axis.AxisMinMaxType.Custom:
if (m_YAxis.min != 0) tempMinValue = m_YAxis.min;
if (m_YAxis.max != 0) tempMaxValue = m_YAxis.max;
break;
}
} }
if (tempMinValue != minValue || tempMaxValue != maxValue) if (tempMinValue != minValue || tempMaxValue != maxValue)
{ {
@@ -436,12 +417,14 @@ namespace XCharts
if (m_XAxis.type == Axis.AxisType.Value) if (m_XAxis.type == Axis.AxisType.Value)
{ {
m_ZeroXOffset = minValue > 0 ? 0 : m_ZeroXOffset = minValue > 0 ? 0 :
maxValue < 0 ? coordinateWid :
Mathf.Abs(minValue) * (coordinateWid / (Mathf.Abs(minValue) + Mathf.Abs(maxValue))); Mathf.Abs(minValue) * (coordinateWid / (Mathf.Abs(minValue) + Mathf.Abs(maxValue)));
OnXMaxValueChanged(); OnXMaxValueChanged();
} }
else if (m_YAxis.type == Axis.AxisType.Value) else if (m_YAxis.type == Axis.AxisType.Value)
{ {
m_ZeroYOffset = minValue > 0 ? 0 : m_ZeroYOffset = minValue > 0 ? 0 :
maxValue < 0 ? coordinateHig :
Mathf.Abs(minValue) * (coordinateHig / (Mathf.Abs(minValue) + Mathf.Abs(maxValue))); Mathf.Abs(minValue) * (coordinateHig / (Mathf.Abs(minValue) + Mathf.Abs(maxValue)));
OnYMaxValueChanged(); OnYMaxValueChanged();
} }
@@ -468,6 +451,8 @@ namespace XCharts
protected override void OnSizeChanged() protected override void OnSizeChanged()
{ {
base.OnSizeChanged(); base.OnSizeChanged();
minValue = 0;
maxValue = 100;
InitSplitX(); InitSplitX();
InitSplitY(); InitSplitY();
} }

View File

@@ -90,9 +90,8 @@ namespace XCharts
} }
float value = serieData[i]; float value = serieData[i];
float pX = startX + i * scaleWid; float pX = startX + i * scaleWid;
float pY = seriesCurrHig[i] + zeroY + m_Coordinate.tickness; float pY = seriesCurrHig[i] + coordinateY + m_Coordinate.tickness;
float dataHig = value / (maxValue - minValue) * coordinateHig; float dataHig = (value - minValue) / (maxValue - minValue) * coordinateHig;
np = new Vector3(pX, pY + dataHig); np = new Vector3(pX, pY + dataHig);
if (i > 0) if (i > 0)
@@ -329,8 +328,8 @@ namespace XCharts
} }
float value = serie.data[i]; float value = serie.data[i];
float pY = startY + i * scaleWid; float pY = startY + i * scaleWid;
float pX = seriesCurrHig[i] + zeroX + m_Coordinate.tickness; float pX = seriesCurrHig[i] + coordinateX + m_Coordinate.tickness;
float dataHig = value / (maxValue - minValue) * coordinateWid; float dataHig = (value - minValue) / (maxValue - minValue) * coordinateWid;
np = new Vector3(pX + dataHig, pY); np = new Vector3(pX + dataHig, pY);
if (i > 0) if (i > 0)