mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-29 12:48:47 +00:00
优化Axis.minMaxType的显示
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user