[improve][Candlestick] improve CandlestickChart

This commit is contained in:
monitor1394
2022-08-26 23:17:54 +08:00
parent a1d8f34720
commit a885be625e
9 changed files with 26 additions and 21 deletions

View File

@@ -58,8 +58,9 @@
## master
* (2022.08.25) 增加`Tooltip``position`参数支持设置移动平台不同的显示位置
* (2022.08.25) 删除`Tooltip``fixedXEnable``fixedYEnable`参数
* (2022.08.26) 优化`CandlestickChart`表现,调整相关的`AddData()`接口参数
* (2022.08.26) 增加`Tooltip``position`参数支持设置移动平台不同的显示位置
* (2022.08.26) 删除`Tooltip``fixedXEnable``fixedYEnable`参数
* (2022.08.25) 优化`EmphasisStyle``label`的支持
* (2022.08.25) 增加`formatter``{d3}`指定维度数据百分比的支持
* (2022.08.24) 修复`ScatterChart``label`不刷新的问题

View File

@@ -7,6 +7,7 @@ namespace XCharts.Editor
{
public override void OnCustomInspectorGUI()
{
PropertyField("m_ColorBy");
PropertyField("m_XAxisIndex");
PropertyField("m_YAxisIndex");
PropertyFieldLimitMin("m_MinShow", 0);

View File

@@ -61,7 +61,7 @@ namespace XCharts.Example
var heighest = boxVals[3];
chart.AddXAxisData(i.ToString());
chart.AddData(0, open, close, lowest, heighest);
chart.AddData(0, i, open, close, lowest, heighest);
}
}
}

View File

@@ -377,23 +377,23 @@ namespace XCharts.Runtime
return AddData(serieIndex, xValue, yValue, dataName, dataId);
}
public SerieData AddData(int serieIndex, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
public SerieData AddData(int serieIndex, double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
{
var serie = GetSerie(serieIndex);
if (serie != null)
{
var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId);
var serieData = serie.AddData(indexOrTimestamp, open, close, lowest, heighest, dataName, dataId);
RefreshPainter(serie.painter);
return serieData;
}
return null;
}
public SerieData AddData(string serieName, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
public SerieData AddData(string serieName, double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
{
var serie = GetSerie(serieName);
if (serie != null)
{
var serieData = serie.AddData(open, close, lowest, heighest, dataName, dataId);
var serieData = serie.AddData(indexOrTimestamp, open, close, lowest, heighest, dataName, dataId);
RefreshPainter(serie.painter);
return serieData;
}

View File

@@ -22,7 +22,7 @@ namespace XCharts.Runtime
var close = Random.Range(40, 90);
var lowest = Random.Range(0, 50);
var heighest = Random.Range(50, 100);
chart.AddData(serie.index, open, close, lowest, heighest);
chart.AddData(serie.index, i, open, close, lowest, heighest);
}
return serie;
}

View File

@@ -108,7 +108,7 @@ namespace XCharts.Runtime
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData))
if (!serieData.show || serie.IsIgnoreValue(serieData))
{
serie.context.dataPoints.Add(Vector3.zero);
serie.context.dataIndexs.Add(serieData.index);
@@ -116,10 +116,11 @@ namespace XCharts.Runtime
}
var state = SerieHelper.GetSerieState(serie, serieData);
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, state);
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var startDataIndex = serieData.data.Count > 4 ? 1 : 0;
var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var lowest = serieData.GetCurrData(startDataIndex + 2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var heighest = serieData.GetCurrData(startDataIndex + 3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var isRise = yAxis.inverse ? close<open : close> open;
var borderWidth = open == 0 ? 0f :
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :

View File

@@ -25,7 +25,7 @@ namespace XCharts.Runtime
var close = lastValue + Random.Range(-5, 10);
var lowest = lastValue + Random.Range(-15, -10);
var heighest = lastValue + Random.Range(10, 20);
chart.AddData(serie.index, open, close, lowest, heighest);
chart.AddData(serie.index, i, open, close, lowest, heighest);
}
return serie;
}

View File

@@ -110,16 +110,17 @@ namespace XCharts.Runtime
for (int i = serie.minShow; i < maxCount; i++)
{
var serieData = showData[i];
if (serie.IsIgnoreValue(serieData))
if (!serieData.show || serie.IsIgnoreValue(serieData))
{
serie.context.dataPoints.Add(Vector3.zero);
serie.context.dataIndexs.Add(serieData.index);
continue;
}
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var heighest = serieData.GetCurrData(3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var startDataIndex = serieData.data.Count > 4 ? 1 : 0;
var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var lowest = serieData.GetCurrData(startDataIndex + 2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var heighest = serieData.GetCurrData(startDataIndex + 3, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
var isRise = yAxis.inverse ? close<open : close> open;
var borderWidth = open == 0 ? 0f :
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :

View File

@@ -1296,11 +1296,12 @@ namespace XCharts.Runtime
/// <param name="dataName"></param>
/// <param name="dataId">the unique id of data</param>
/// <returns></returns>
public SerieData AddData(double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
public SerieData AddData(double indexOrTimestamp, double open, double close, double lowest, double heighest, string dataName = null, string dataId = null)
{
CheckMaxCache();
var serieData = SerieDataPool.Get();
serieData.data.Clear();
serieData.data.Add(indexOrTimestamp);
serieData.data.Add(open);
serieData.data.Add(close);
serieData.data.Add(lowest);
@@ -1309,7 +1310,7 @@ namespace XCharts.Runtime
serieData.index = m_Data.Count;
serieData.id = dataId;
AddSerieData(serieData);
m_ShowDataDimension = 4;
m_ShowDataDimension = 5;
SetVerticesDirty();
CheckDataName(dataName);
labelDirty = true;