mirror of
https://github.com/XCharts-Team/XCharts.git
synced 2026-05-29 12:48:47 +00:00
[improve][Candlestick] improve CandlestickChart
This commit is contained in:
@@ -58,8 +58,9 @@
|
|||||||
|
|
||||||
## master
|
## master
|
||||||
|
|
||||||
* (2022.08.25) 增加`Tooltip`的`position`参数支持设置移动平台不同的显示位置
|
* (2022.08.26) 优化`CandlestickChart`表现,调整相关的`AddData()`接口参数
|
||||||
* (2022.08.25) 删除`Tooltip`的`fixedXEnable`和`fixedYEnable`参数
|
* (2022.08.26) 增加`Tooltip`的`position`参数支持设置移动平台不同的显示位置
|
||||||
|
* (2022.08.26) 删除`Tooltip`的`fixedXEnable`和`fixedYEnable`参数
|
||||||
* (2022.08.25) 优化`EmphasisStyle`对`label`的支持
|
* (2022.08.25) 优化`EmphasisStyle`对`label`的支持
|
||||||
* (2022.08.25) 增加`formatter`对`{d3}`指定维度数据百分比的支持
|
* (2022.08.25) 增加`formatter`对`{d3}`指定维度数据百分比的支持
|
||||||
* (2022.08.24) 修复`ScatterChart`的`label`不刷新的问题
|
* (2022.08.24) 修复`ScatterChart`的`label`不刷新的问题
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace XCharts.Editor
|
|||||||
{
|
{
|
||||||
public override void OnCustomInspectorGUI()
|
public override void OnCustomInspectorGUI()
|
||||||
{
|
{
|
||||||
|
PropertyField("m_ColorBy");
|
||||||
PropertyField("m_XAxisIndex");
|
PropertyField("m_XAxisIndex");
|
||||||
PropertyField("m_YAxisIndex");
|
PropertyField("m_YAxisIndex");
|
||||||
PropertyFieldLimitMin("m_MinShow", 0);
|
PropertyFieldLimitMin("m_MinShow", 0);
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ namespace XCharts.Example
|
|||||||
var heighest = boxVals[3];
|
var heighest = boxVals[3];
|
||||||
|
|
||||||
chart.AddXAxisData(i.ToString());
|
chart.AddXAxisData(i.ToString());
|
||||||
chart.AddData(0, open, close, lowest, heighest);
|
chart.AddData(0, i, open, close, lowest, heighest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -377,23 +377,23 @@ namespace XCharts.Runtime
|
|||||||
return AddData(serieIndex, xValue, yValue, dataName, dataId);
|
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);
|
var serie = GetSerie(serieIndex);
|
||||||
if (serie != null)
|
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);
|
RefreshPainter(serie.painter);
|
||||||
return serieData;
|
return serieData;
|
||||||
}
|
}
|
||||||
return null;
|
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);
|
var serie = GetSerie(serieName);
|
||||||
if (serie != null)
|
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);
|
RefreshPainter(serie.painter);
|
||||||
return serieData;
|
return serieData;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace XCharts.Runtime
|
|||||||
var close = Random.Range(40, 90);
|
var close = Random.Range(40, 90);
|
||||||
var lowest = Random.Range(0, 50);
|
var lowest = Random.Range(0, 50);
|
||||||
var heighest = Random.Range(50, 100);
|
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;
|
return serie;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ namespace XCharts.Runtime
|
|||||||
for (int i = serie.minShow; i < maxCount; i++)
|
for (int i = serie.minShow; i < maxCount; i++)
|
||||||
{
|
{
|
||||||
var serieData = showData[i];
|
var serieData = showData[i];
|
||||||
if (serie.IsIgnoreValue(serieData))
|
if (!serieData.show || serie.IsIgnoreValue(serieData))
|
||||||
{
|
{
|
||||||
serie.context.dataPoints.Add(Vector3.zero);
|
serie.context.dataPoints.Add(Vector3.zero);
|
||||||
serie.context.dataIndexs.Add(serieData.index);
|
serie.context.dataIndexs.Add(serieData.index);
|
||||||
@@ -116,10 +116,11 @@ namespace XCharts.Runtime
|
|||||||
}
|
}
|
||||||
var state = SerieHelper.GetSerieState(serie, serieData);
|
var state = SerieHelper.GetSerieState(serie, serieData);
|
||||||
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, state);
|
var itemStyle = SerieHelper.GetItemStyle(serie, serieData, state);
|
||||||
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var startDataIndex = serieData.data.Count > 4 ? 1 : 0;
|
||||||
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
var heighest = serieData.GetCurrData(3, 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 isRise = yAxis.inverse ? close<open : close> open;
|
||||||
var borderWidth = open == 0 ? 0f :
|
var borderWidth = open == 0 ? 0f :
|
||||||
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :
|
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ namespace XCharts.Runtime
|
|||||||
var close = lastValue + Random.Range(-5, 10);
|
var close = lastValue + Random.Range(-5, 10);
|
||||||
var lowest = lastValue + Random.Range(-15, -10);
|
var lowest = lastValue + Random.Range(-15, -10);
|
||||||
var heighest = lastValue + Random.Range(10, 20);
|
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;
|
return serie;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -110,16 +110,17 @@ namespace XCharts.Runtime
|
|||||||
for (int i = serie.minShow; i < maxCount; i++)
|
for (int i = serie.minShow; i < maxCount; i++)
|
||||||
{
|
{
|
||||||
var serieData = showData[i];
|
var serieData = showData[i];
|
||||||
if (serie.IsIgnoreValue(serieData))
|
if (!serieData.show || serie.IsIgnoreValue(serieData))
|
||||||
{
|
{
|
||||||
serie.context.dataPoints.Add(Vector3.zero);
|
serie.context.dataPoints.Add(Vector3.zero);
|
||||||
serie.context.dataIndexs.Add(serieData.index);
|
serie.context.dataIndexs.Add(serieData.index);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var open = serieData.GetCurrData(0, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var startDataIndex = serieData.data.Count > 4 ? 1 : 0;
|
||||||
var close = serieData.GetCurrData(1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var open = serieData.GetCurrData(startDataIndex, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
var lowest = serieData.GetCurrData(2, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
var close = serieData.GetCurrData(startDataIndex + 1, dataChangeDuration, yAxis.inverse, yMinValue, yMaxValue);
|
||||||
var heighest = serieData.GetCurrData(3, 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 isRise = yAxis.inverse ? close<open : close> open;
|
||||||
var borderWidth = open == 0 ? 0f :
|
var borderWidth = open == 0 ? 0f :
|
||||||
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :
|
(itemStyle.runtimeBorderWidth == 0 ? theme.serie.candlestickBorderWidth :
|
||||||
|
|||||||
@@ -1296,11 +1296,12 @@ namespace XCharts.Runtime
|
|||||||
/// <param name="dataName"></param>
|
/// <param name="dataName"></param>
|
||||||
/// <param name="dataId">the unique id of data</param>
|
/// <param name="dataId">the unique id of data</param>
|
||||||
/// <returns></returns>
|
/// <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();
|
CheckMaxCache();
|
||||||
var serieData = SerieDataPool.Get();
|
var serieData = SerieDataPool.Get();
|
||||||
serieData.data.Clear();
|
serieData.data.Clear();
|
||||||
|
serieData.data.Add(indexOrTimestamp);
|
||||||
serieData.data.Add(open);
|
serieData.data.Add(open);
|
||||||
serieData.data.Add(close);
|
serieData.data.Add(close);
|
||||||
serieData.data.Add(lowest);
|
serieData.data.Add(lowest);
|
||||||
@@ -1309,7 +1310,7 @@ namespace XCharts.Runtime
|
|||||||
serieData.index = m_Data.Count;
|
serieData.index = m_Data.Count;
|
||||||
serieData.id = dataId;
|
serieData.id = dataId;
|
||||||
AddSerieData(serieData);
|
AddSerieData(serieData);
|
||||||
m_ShowDataDimension = 4;
|
m_ShowDataDimension = 5;
|
||||||
SetVerticesDirty();
|
SetVerticesDirty();
|
||||||
CheckDataName(dataName);
|
CheckDataName(dataName);
|
||||||
labelDirty = true;
|
labelDirty = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user