From fe19a3a66591f6772bf967e9520520e6343058d2 Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Wed, 4 Dec 2019 09:44:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=92=8C=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9B=B4=E6=96=B0UpdateData=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 +- Documentation/XChartsAPI.md | 4 ++ Documentation/XCharts问答.md | 5 ++ Runtime/API/BaseChart_API.cs | 80 ++++++++++++++++++++++++------ Runtime/Component/Main/Serie.cs | 48 ++++++++++++++---- Runtime/Component/Main/Series.cs | 57 +++++++++++++++------ Runtime/Component/Sub/SerieData.cs | 4 +- Runtime/Utility/XChartsMgr.cs | 2 +- 8 files changed, 159 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 616021b1..8a29b300 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,9 @@ # 更新日志 -* (2019.12.03) 增加圆环饼图的圆角支持 -* (2019.12.03) 增加数据更新动画 +* (2019.12.04) 优化和完善数据更新`UpdateData`接口 +* (2019.12.03) 增加圆环饼图的圆角支持,参数:`serie.arcShaped` +* (2019.12.03) 增加数据更新动画,参数:`serie.animation.updateAnimation` * (2019.11.30) 增加`GaugeChart`仪表盘 * (2019.11.22) 修复`BarChart`清空数据重新赋值后`SerieLabel`显示异常的问题 * (2019.11.16) 修复`SerieLabel`设置`color`等参数不生效的问题 diff --git a/Documentation/XChartsAPI.md b/Documentation/XChartsAPI.md index 6e4627d8..e318966b 100644 --- a/Documentation/XChartsAPI.md +++ b/Documentation/XChartsAPI.md @@ -29,6 +29,10 @@ * `BaseChart.AddData(int serieIndex, float xValue, float yValue, string dataName = null)`:添加`(x,y)`数据到指定系列中。 * `BaseChart.UpdateData(string serieName,int dataIndex, float value)`:更新指定系列中的指定索引数据。 * `BaseChart.UpdateData(int serieIndex,int dataIndex, float value)`:更新指定系列中的指定索引数据。 +* `BaseChart.UpdateData(string serieName, int dataIndex, List multidimensionalData)`:更新指定系列指定索引的数据项的多维数据。 +* `BaseChart.UpdateData(int serieIndex, int dataIndex, List multidimensionalData)`:更新指定系列指定索引的数据项的多维数据。 +* `BaseChart.UpdateData(string serieName, int dataIndex, int dimension, float value)`:更新指定系列指定索引指定维数的数据。维数从0开始。 +* `BaseChart.UpdateData(int serieIndex, int dataIndex, int dimension, float value)`:更新指定系列指定索引指定维数的数据。维数从0开始。 * `BaseChart.UpdateDataName(string serieName,int dataIndex, string dataName)`:更新指定系列中的指定索引数据名称。 * `BaseChart.UpdateDataName(int serieIndex, int dataIndex, string dataName)`:更新指定系列中的指定索引数据名称。 * `BaseChart.SetActive(string serieName, bool active)`:设置指定系列是否显示。 diff --git a/Documentation/XCharts问答.md b/Documentation/XCharts问答.md index b6991acb..f308fa5d 100644 --- a/Documentation/XCharts问答.md +++ b/Documentation/XCharts问答.md @@ -27,6 +27,7 @@ [QA 21:如何显示图例?](#如何显示图例) [QA 22:如何做成预设?](#如何做成预设) [QA 23:如何在图表上画点画线等自定义内容?](#如何在图表上画点画线等自定义内容) +[QA 24:如何实现心电图类似的数据移动效果?](#如何实现心电图类似的数据移动效果) ## 如何调整坐标轴与背景的边距 @@ -120,6 +121,10 @@ 答:xcharts有自定义绘制回调`customDrawCallback`,具体可参考`Demo12_CustomDrawing.cs` +## 如何实现心电图类似的数据移动效果 + +答:axis和serie都设置相同的maxCache。maxCache可固定数据个数,当数据超过设定时会先删除第一个在添加新数据,实现数据移动效果。 + [返回首页](https://github.com/monitor1394/unity-ugui-XCharts) [XChartsAPI接口](XChartsAPI.md) [XCharts配置项手册](XCharts配置项手册.md) diff --git a/Runtime/API/BaseChart_API.cs b/Runtime/API/BaseChart_API.cs index 11098e25..46e3416c 100644 --- a/Runtime/API/BaseChart_API.cs +++ b/Runtime/API/BaseChart_API.cs @@ -258,10 +258,14 @@ namespace XCharts /// the name of serie /// the index of data /// the data will be update - public virtual void UpdateData(string serieName, int dataIndex, float value) + public virtual bool UpdateData(string serieName, int dataIndex, float value) { - m_Series.UpdateData(serieName, dataIndex, value); - RefreshChart(); + if (m_Series.UpdateData(serieName, dataIndex, value)) + { + RefreshChart(); + return true; + } + return false; } /// @@ -271,10 +275,46 @@ namespace XCharts /// the index of serie /// the index of data /// the data will be update - public virtual void UpdateData(int serieIndex, int dataIndex, float value) + public virtual bool UpdateData(int serieIndex, int dataIndex, float value) { - m_Series.UpdateData(serieIndex, dataIndex, value); - RefreshChart(); + if (m_Series.UpdateData(serieIndex, dataIndex, value)) + { + RefreshChart(); + return true; + } + return false; + } + + /// + /// 更新指定系列指定索引的数据项的多维数据。 + /// + /// + /// + /// 一个数据项的多维数据列表,而不是多个数据项的数据 + public virtual bool UpdateData(string serieName, int dataIndex, List multidimensionalData) + { + if (m_Series.UpdateData(serieName, dataIndex, multidimensionalData)) + { + RefreshChart(); + return true; + } + return false; + } + + /// + /// 更新指定系列指定索引的数据项的多维数据。 + /// + /// + /// + /// 一个数据项的多维数据列表,而不是多个数据项的数据 + public virtual bool UpdateData(int serieIndex, int dataIndex, List multidimensionalData) + { + if (m_Series.UpdateData(serieIndex, dataIndex, multidimensionalData)) + { + RefreshChart(); + return true; + } + return false; } /// @@ -284,10 +324,14 @@ namespace XCharts /// /// 指定维数,从0开始 /// - public virtual void UpdateData(string serieName, int dataIndex, int dimension, float value) + public virtual bool UpdateData(string serieName, int dataIndex, int dimension, float value) { - m_Series.UpdateData(serieName, dataIndex, dimension, value); - RefreshChart(); + if (m_Series.UpdateData(serieName, dataIndex, dimension, value)) + { + RefreshChart(); + return true; + } + return false; } /// @@ -297,10 +341,14 @@ namespace XCharts /// /// 指定维数,从0开始 /// - public virtual void UpdateData(int serieIndex, int dataIndex, int dimension, float value) + public virtual bool UpdateData(int serieIndex, int dataIndex, int dimension, float value) { - m_Series.UpdateData(serieIndex, dataIndex, dimension, value); - RefreshChart(); + if (m_Series.UpdateData(serieIndex, dataIndex, dimension, value)) + { + RefreshChart(); + return true; + } + return false; } /// @@ -310,9 +358,9 @@ namespace XCharts /// /// /// - public virtual void UpdateDataName(string serieName, int dataIndex, string dataName) + public virtual bool UpdateDataName(string serieName, int dataIndex, string dataName) { - m_Series.UpdateDataName(serieName, dataIndex, dataName); + return m_Series.UpdateDataName(serieName, dataIndex, dataName); } /// @@ -322,9 +370,9 @@ namespace XCharts /// /// /// - public virtual void UpdateDataName(int serieIndex, int dataIndex, string dataName) + public virtual bool UpdateDataName(int serieIndex, int dataIndex, string dataName) { - m_Series.UpdateDataName(serieIndex, dataIndex, dataName); + return m_Series.UpdateDataName(serieIndex, dataIndex, dataName); } /// diff --git a/Runtime/Component/Main/Serie.cs b/Runtime/Component/Main/Serie.cs index 740efaef..a83eb37b 100644 --- a/Runtime/Component/Main/Serie.cs +++ b/Runtime/Component/Main/Serie.cs @@ -494,7 +494,11 @@ namespace XCharts /// 标题样式。 /// public TitleStyle titleStyle { get { return m_TitleStyle; } set { m_TitleStyle = value; } } - + /// + /// 数据项里的数据维数。 + /// + /// + public int showDataDimension { get { return m_ShowDataDimension; } } /// /// 系列中的数据内容数组。SerieData可以设置1到n维数据。 /// @@ -991,9 +995,10 @@ namespace XCharts /// /// /// - public void UpdateYData(int index, float value) + public bool UpdateYData(int index, float value) { UpdateData(index, 1, value); + return true; } /// @@ -1002,10 +1007,11 @@ namespace XCharts /// /// /// - public void UpdateXYData(int index, float xValue, float yValue) + public bool UpdateXYData(int index, float xValue, float yValue) { - UpdateData(index, 0, xValue); - UpdateData(index, 1, yValue); + var flag1 = UpdateData(index, 0, xValue); + var flag2 = UpdateData(index, 1, yValue); + return flag1 || flag2; } /// @@ -1014,16 +1020,36 @@ namespace XCharts /// 要更新数据的索引 /// 要更新数据的维数 /// 新的数据值 - public void UpdateData(int index, int dimension, float value) + public bool UpdateData(int index, int dimension, float value) { - if (index < 0) return; - if (index < m_Data.Count) + if (index >= 0 && index < m_Data.Count) { - m_Data[index].UpdateData(dimension, value); + return m_Data[index].UpdateData(dimension, value); + } + else + { + return false; } } - public void UpdateDataName(int index, string name) + /// + /// 更新指定索引的数据项数据列表 + /// + /// + /// + public bool UpdateData(int index, List values) + { + if (index >= 0 && index < m_Data.Count && values != null) + { + var list = m_Data[index].data; + list.Clear(); + foreach (var v in values) list.Add(v); + return true; + } + return false; + } + + public bool UpdateDataName(int index, string name) { if (index >= 0 && index < m_Data.Count) { @@ -1033,7 +1059,9 @@ namespace XCharts { serieData.labelText.text = name == null ? "" : name; } + return true; } + return false; } /// diff --git a/Runtime/Component/Main/Series.cs b/Runtime/Component/Main/Series.cs index 5ce88f01..4489384a 100644 --- a/Runtime/Component/Main/Series.cs +++ b/Runtime/Component/Main/Series.cs @@ -394,13 +394,14 @@ namespace XCharts /// /// /// - public void UpdateData(string serieName, int dataIndex, float value) + public bool UpdateData(string serieName, int dataIndex, float value) { var serie = GetSerie(serieName); if (serie != null) { - serie.UpdateYData(dataIndex, value); + return serie.UpdateYData(dataIndex, value); } + return false; } /// @@ -409,13 +410,14 @@ namespace XCharts /// /// /// - public void UpdateDataName(string serieName, int dataIndex, string dataName) + public bool UpdateDataName(string serieName, int dataIndex, string dataName) { var serie = GetSerie(serieName); if (serie != null) { - serie.UpdateDataName(dataIndex, dataName); + return serie.UpdateDataName(dataIndex, dataName); } + return false; } /// @@ -424,13 +426,14 @@ namespace XCharts /// /// /// - public void UpdateDataName(int serieIndex, int dataIndex, string dataName) + public bool UpdateDataName(int serieIndex, int dataIndex, string dataName) { var serie = GetSerie(serieIndex); if (serie != null) { - serie.UpdateDataName(dataIndex, dataName); + return serie.UpdateDataName(dataIndex, dataName); } + return false; } /// @@ -439,13 +442,31 @@ namespace XCharts /// /// /// - public void UpdateData(int serieIndex, int dataIndex, float value) + public bool UpdateData(int serieIndex, int dataIndex, float value) { var serie = GetSerie(serieIndex); if (serie != null) { - serie.UpdateYData(dataIndex, value); + return serie.UpdateYData(dataIndex, value); } + return false; + } + + public bool UpdateData(string serieName,int dataIndex,List values){ + var serie = GetSerie(serieName); + if (serie != null) + { + return serie.UpdateData(dataIndex, values); + } + return false; + } + public bool UpdateData(int serieIndex,int dataIndex,List values){ + var serie = GetSerie(serieIndex); + if (serie != null) + { + return serie.UpdateData(dataIndex, values); + } + return false; } /// @@ -455,13 +476,14 @@ namespace XCharts /// 数据项 /// 数据维数,从0开始 /// 值 - public void UpdateData(int serieIndex, int dataIndex, int dimension, float value) + public bool UpdateData(int serieIndex, int dataIndex, int dimension, float value) { var serie = GetSerie(serieIndex); if (serie != null) { - serie.UpdateData(dataIndex, dimension, value); + return serie.UpdateData(dataIndex, dimension, value); } + return false; } /// @@ -471,13 +493,14 @@ namespace XCharts /// /// 数据维数,从0开始 /// - public void UpdateData(string serieName, int dataIndex, int dimension, float value) + public bool UpdateData(string serieName, int dataIndex, int dimension, float value) { var serie = GetSerie(serieName); if (serie != null) { - serie.UpdateData(dataIndex, dimension, value); + return serie.UpdateData(dataIndex, dimension, value); } + return false; } @@ -488,13 +511,14 @@ namespace XCharts /// /// /// - public void UpdateXYData(string serieName, int dataIndex, float xValue, float yValue) + public bool UpdateXYData(string serieName, int dataIndex, float xValue, float yValue) { var serie = GetSerie(serieName); if (serie != null) { - serie.UpdateXYData(dataIndex, xValue, yValue); + return serie.UpdateXYData(dataIndex, xValue, yValue); } + return false; } /// @@ -504,13 +528,14 @@ namespace XCharts /// /// /// - public void UpdateXYData(int serieIndex, int dataIndex, float xValue, float yValue) + public bool UpdateXYData(int serieIndex, int dataIndex, float xValue, float yValue) { var serie = GetSerie(serieIndex); if (serie != null) { - serie.UpdateXYData(dataIndex, xValue, yValue); + return serie.UpdateXYData(dataIndex, xValue, yValue); } + return false; } /// diff --git a/Runtime/Component/Sub/SerieData.cs b/Runtime/Component/Sub/SerieData.cs index 1f778377..554a12a5 100644 --- a/Runtime/Component/Sub/SerieData.cs +++ b/Runtime/Component/Sub/SerieData.cs @@ -200,7 +200,7 @@ namespace XCharts } } - public void UpdateData(int dimension, float value) + public bool UpdateData(int dimension, float value) { if (dimension >= 0 && dimension < data.Count) { @@ -209,7 +209,9 @@ namespace XCharts m_DataUpdateTime[dimension] = Time.time; m_DataUpdateFlag[dimension] = true; data[dimension] = value; + return true; } + return false; } private void CheckLastData() diff --git a/Runtime/Utility/XChartsMgr.cs b/Runtime/Utility/XChartsMgr.cs index aca94902..be1d185a 100644 --- a/Runtime/Utility/XChartsMgr.cs +++ b/Runtime/Utility/XChartsMgr.cs @@ -25,7 +25,7 @@ namespace XCharts public class XChartsMgr : MonoBehaviour { public const string version = "1.0.5"; - public const int date = 20191122; + public const int date = 20191204; [SerializeField] private string m_NowVersion; [SerializeField] private string m_NewVersion;