Skip to content

Commit

Permalink
增加Bar支持X轴和Y轴都为Category类目轴
Browse files Browse the repository at this point in the history
  • Loading branch information
monitor1394 committed Jan 24, 2024
1 parent 61a2da1 commit d93f783
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 19 deletions.
1 change: 1 addition & 0 deletions Documentation~/zh/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ slug: /changelog

## master

* (2024.01.24) 增加`Bar`支持X轴和Y轴都为`Category`类目轴
* (2024.01.23) 增加`{y}`通配符用于获取Y轴的类目名
* (2024.01.23) 增加`Line`支持X轴和Y轴都为`Category`类目轴
* (2024.01.18) 修复`Animation``type`代码动态修改无效的问题
Expand Down
12 changes: 7 additions & 5 deletions Runtime/Serie/Bar/BarHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ private void DrawBarSerie(VertexHelper vh, Bar serie)

var barCount = chart.GetSerieBarRealCount<Bar>();
float categoryWidth = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom);
float relativedCategoryWidth = AxisHelper.GetDataWidth(relativedAxis, relativedAxisLength, showData.Count, dataZoom);
float barGap = chart.GetSerieBarGap<Bar>();
float totalBarWidth = chart.GetSerieTotalWidth<Bar>(categoryWidth, barGap, barCount);
float barWidth = serie.GetBarWidth(categoryWidth, barCount);
Expand Down Expand Up @@ -231,7 +232,7 @@ private void DrawBarSerie(VertexHelper vh, Bar serie)

var pX = 0f;
var pY = 0f;
UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, barWidth, isStack, value, ref pX, ref pY);
UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, relativedCategoryWidth, barWidth, isStack, value, ref pX, ref pY);
var barHig = 0f;
if (isPercentStack)
{
Expand All @@ -240,7 +241,7 @@ private void DrawBarSerie(VertexHelper vh, Bar serie)
}
else
{
barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, categoryWidth, relativedValue);
barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, relativedCategoryWidth, relativedValue);
}
float currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig);
Vector3 plb, plt, prt, prb, top;
Expand Down Expand Up @@ -295,7 +296,8 @@ private void DrawBarSerie(VertexHelper vh, Bar serie)
}
}

private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i, float categoryWidth, float barWidth, bool isStack,
private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i,
float categoryWidth, float relativedCategoryWidth, float barWidth, bool isStack,
double value, ref float pX, ref float pY)
{
if (isY)
Expand All @@ -313,7 +315,7 @@ private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relative
pY = grid.context.y + valueLen - categoryWidth * 0.5f;
}
}
pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, relativedCategoryWidth, 0);
if (isStack)
{
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
Expand All @@ -335,7 +337,7 @@ private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relative
pX = grid.context.x + valueLen - categoryWidth * 0.5f;
}
}
pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, relativedCategoryWidth, 0);
if (isStack)
{
for (int n = 0; n < m_StackSerieData.Count - 1; n++)
Expand Down
14 changes: 8 additions & 6 deletions Runtime/Serie/Bar/SimplifiedBarHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,12 @@ private void DrawBarSerie(VertexHelper vh, SimplifiedBar serie, int colorIndex)
return;

var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width;
var relativedAxisLength = isY ? m_SerieGrid.context.width : m_SerieGrid.context.height;
var axisXY = isY ? m_SerieGrid.context.y : m_SerieGrid.context.x;

var barCount = chart.GetSerieBarRealCount<SimplifiedBar>();
float categoryWidth = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom);
float relativedCategoryWidth = AxisHelper.GetDataWidth(relativedAxis, relativedAxisLength, showData.Count, dataZoom);
float barGap = chart.GetSerieBarGap<SimplifiedBar>();
float totalBarWidth = chart.GetSerieTotalWidth<SimplifiedBar>(categoryWidth, barGap, barCount);
float barWidth = serie.GetBarWidth(categoryWidth, barCount);
Expand Down Expand Up @@ -172,9 +174,9 @@ private void DrawBarSerie(VertexHelper vh, SimplifiedBar serie, int colorIndex)

var pX = 0f;
var pY = 0f;
UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, barWidth, value, ref pX, ref pY);
UpdateXYPosition(m_SerieGrid, isY, axis, relativedAxis, i, categoryWidth, relativedCategoryWidth, barWidth, value, ref pX, ref pY);

var barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, categoryWidth, relativedValue);
var barHig = AxisHelper.GetAxisValueLength(m_SerieGrid, relativedAxis, relativedCategoryWidth, relativedValue);
var currHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, barHig);

Vector3 plb, plt, prt, prb, top;
Expand Down Expand Up @@ -204,8 +206,8 @@ private void DrawBarSerie(VertexHelper vh, SimplifiedBar serie, int colorIndex)
}
}

private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i, float categoryWidth, float barWidth,
double value, ref float pX, ref float pY)
private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relativedAxis, int i, float categoryWidth,
float relativedCategoryWidth, float barWidth, double value, ref float pX, ref float pY)
{
if (isY)
{
Expand All @@ -218,7 +220,7 @@ private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relative
if (axis.context.minMaxRange <= 0) pY = grid.context.y;
else pY = grid.context.y + (float)((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.height - barWidth);
}
pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
pX = AxisHelper.GetAxisValuePosition(grid, relativedAxis, relativedCategoryWidth, 0);
}
else
{
Expand All @@ -231,7 +233,7 @@ private void UpdateXYPosition(GridCoord grid, bool isY, Axis axis, Axis relative
if (axis.context.minMaxRange <= 0) pX = grid.context.x;
else pX = grid.context.x + (float)((value - axis.context.minValue) / axis.context.minMaxRange) * (grid.context.width - barWidth);
}
pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, categoryWidth, 0);
pY = AxisHelper.GetAxisValuePosition(grid, relativedAxis, relativedCategoryWidth, 0);
}
}

Expand Down
1 change: 0 additions & 1 deletion Runtime/Serie/Line/LineHandler.GridCoord.cs
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,6 @@ private void DrawLineSerie(VertexHelper vh, Line serie)
var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width;
var axisRelativedLength = isY ? m_SerieGrid.context.width : m_SerieGrid.context.height;


int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow) :
showData.Count;
Expand Down
18 changes: 11 additions & 7 deletions Runtime/Serie/Line/SimplifiedLineHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,12 +160,15 @@ private void DrawLineSerie(VertexHelper vh, SimplifiedLine serie)
if (showData.Count <= 0)
return;

var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width;
var scaleWid = AxisHelper.GetDataWidth(axis, axisLength, showData.Count, dataZoom);

int maxCount = serie.maxShow > 0 ?
(serie.maxShow > showData.Count ? showData.Count : serie.maxShow) :
showData.Count;

var axisLength = isY ? m_SerieGrid.context.height : m_SerieGrid.context.width;
var axisRelativedLength = isY ? m_SerieGrid.context.width : m_SerieGrid.context.height;
var scaleWid = AxisHelper.GetDataWidth(axis, axisLength, maxCount, dataZoom);
var scaleRelativedWid = AxisHelper.GetDataWidth(relativedAxis, axisRelativedLength, maxCount, dataZoom);

int rate = LineHelper.GetDataAverageRate(serie, m_SerieGrid, maxCount, false);
var totalAverage = serie.sampleAverage > 0 ?
serie.sampleAverage :
Expand All @@ -179,6 +182,7 @@ private void DrawLineSerie(VertexHelper vh, SimplifiedLine serie)
var lineWidth = LineHelper.GetLineWidth(ref interacting, serie, chart.theme.serie.lineWidth);

axis.context.scaleWidth = scaleWid;
relativedAxis.context.scaleWidth = scaleRelativedWid;
serie.containerIndex = m_SerieGrid.index;
serie.containterInstanceId = m_SerieGrid.instanceId;

Expand All @@ -203,7 +207,7 @@ private void DrawLineSerie(VertexHelper vh, SimplifiedLine serie)
maxCount, totalAverage, i, dataAddDuration, dataChangeDuration, ref dataChanging, relativedAxis, unscaledTime);

serieData.context.stackHeight = GetDataPoint(isY, axis, relativedAxis, m_SerieGrid, xValue, relativedValue,
i, scaleWid, false, ref np);
i, scaleWid, scaleRelativedWid, false, ref np);

serieData.context.position = np;

Expand Down Expand Up @@ -235,14 +239,14 @@ private void DrawLineSerie(VertexHelper vh, SimplifiedLine serie)
}

private float GetDataPoint(bool isY, Axis axis, Axis relativedAxis, GridCoord grid, double xValue,
double yValue, int i, float scaleWid, bool isStack, ref Vector3 np)
double yValue, int i, float scaleWid, float scaleRelativedWid, bool isStack, ref Vector3 np)
{
float xPos, yPos;
var gridXY = isY ? grid.context.x : grid.context.y;

if (isY)
{
var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue);
var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleRelativedWid, yValue);
valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig);

xPos = gridXY + valueHig;
Expand All @@ -251,7 +255,7 @@ private float GetDataPoint(bool isY, Axis axis, Axis relativedAxis, GridCoord gr
else
{

var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleWid, yValue);
var valueHig = AxisHelper.GetAxisValueDistance(grid, relativedAxis, scaleRelativedWid, yValue);
valueHig = AnimationStyleHelper.CheckDataAnimation(chart, serie, i, valueHig);

yPos = gridXY + valueHig;
Expand Down

0 comments on commit d93f783

Please sign in to comment.