From 5d5f32b55e486576d760f5f5c92a7dee9063098a Mon Sep 17 00:00:00 2001 From: monitor1394 Date: Sun, 3 Sep 2023 23:53:00 +0800 Subject: [PATCH] 3.8.0 --- Documentation~/en/changelog.md | 85 +++++++++++++--- Documentation~/en/tutorial01.md | 172 ++++++++++++++++++-------------- Documentation~/zh/changelog.md | 7 +- README-en.md | 110 ++++++++++---------- Runtime/Internal/XChartsMgr.cs | 2 +- package.json | 4 +- 6 files changed, 228 insertions(+), 152 deletions(-) diff --git a/Documentation~/en/changelog.md b/Documentation~/en/changelog.md index f3efe7ea..b964587e 100644 --- a/Documentation~/en/changelog.md +++ b/Documentation~/en/changelog.md @@ -2,6 +2,7 @@ # 更新日志 [master](#master) +[v3.8.0](#v380) [v3.7.0](#v370) [v3.6.0](#v360) [v3.5.0](#v350) @@ -62,6 +63,62 @@ ## master +## v3.8.0 + +Highlights: + +* Refactoring `Animation` animation system, adding support for `New Animation` and `Interactive animation` +* Improved `PieChart` animation interactive representation +* Added four new markers for `Symbol` : `EmptyTriangle`, `EmptyDiamond`, `Plus` and `Minus` +* Improved `Chart` mouse interaction callback +* Added the function of `LabelLine` to fix the horizontal coordinate +* Added `GridLayout` grid layout component +* Added `Auto` type for `Tooltip` +* Optimizes and fixes several other issues + +Log details: + +* (2023.09.03) Release `v3.8.0` +* (2023.09.01) Added `Tooltip` Auto to automatically set display type and trigger type +* (2023.08.29) Added gridIndex support for `Ring` to set the specified grid +* (2023.08.29) Added gridIndex support for Radar to set the specified grid +* (2023.08.29) Added gridIndex support for `Pie` to set specified grids +* (2023.08.29) Added the GridLayout component for managing multiple GridCoord layouts +* (2023.08.25) Fixed display only one Label when there are multiple Marklines +* (2023.08.25) Fixed MarkLine drawing outside the coordinate system after opening Clip +* (2023.08.24) Optimizes `YAxis` to default 0-1 range when all data is 0 +* (2023.08.23) Fixed an issue where `Label` of `YAxis` could duplicate +* (2023.08.22) Fixed `Bar` display hidden drawing performance exception +* (2023.08.22) Improved Zebra histogram rendering performance (#276) +* (2023.08.16) Added Daemon daemon to resolve an error after TMP is enabled locally +* (2023.08.15) Fixed `Data` displaying axes incorrectly when data is between -1 and 1 (#273) (by __Ambitroc__) +* (2023.08.14) Fixed `XCharts` updating error after` TextMeshPro `and` NewInputSystem `are enabled locally (#272) +* (2023.08.12) Fixed `Chart` error when deleted at runtime (#269) +* (2023.08.11) Fixed an issue where data could not be added when DataZoom was enabled +* (2023.08.11) Fixed `itemFormatter` not working when `SerieData` sets ItemStyle separately +* (2023.08.10) Improved BarChart`s performance when Tooltip`s Trigger is an Item +* (2023.08.09) Added `Axis` to support dynamic icon colors by setting `color` of `IconStyle` to `clear` +* (2023.08.08) Added support for `Pie` for `LabelLine`s` lineEndX ` +* (2023.08.05) Clean up the code for `Examples` and remove unnecessary use cases +* (2023.08.04) Added support for `LabelLine`'s `lineEndX` to set the boot line to fixed X position +* (2023.08.04) Added support for Ring`s avoidLabelOverlap to avoid text stacking (#247) +* (2023.08.03) Improved Chart`s onSerieEnter, onSerieExit, and onSerieClick callbacks +* (2023.08.02) Fixed invalid `onSerieEnter` and `onSerieExit` callbacks for `BarChart` +* (2023.08.02) Added support for Symbol's `Plus` and `Minus` signs +* (2023.07.31) Added support for Symbol's `EmptyTriangle` and `EmptyDiamond`, improved `Symbol` performance +* (2023.07.31) Improved the default configuration effect of `Line` +* (2023.07.27) Add `Serie` to `minRadius` to set minimum radius +* (2023.07.26) Added `MLValue` multiple values +* (2023.07.25) Added `XLog` log system +* (2023.07.18) Improved the interactive animation effect of `Pie` pie chart +* (2023.07.14) Added support for `Animation` `Interaction` interactive animation configuration +* (2023.07.11) Added `Animation` `Addition` new animation configuration support +* (2023.07.11) Reconstructs `Animation` animation system to improve animation experience +* (2023.06.30) Added support for PolarCood`s indicatorLabelOffset setting indicating text offsets +* (2023.06.30) Fixed an issue where the background color of Axis `IndicatorLabel` could be abnormal +* (2023.06.30) Added support for Axis `IndicatorLabel` customizable `color` +* (2023.06.12) Fixed an issue where AxisLabel's formatterFunction had the wrong value on the value axis + ## v3.7.0 Highlights: @@ -75,17 +132,17 @@ Log details: * (2022.06.08) Release v3.7.0 * (2023.06.04) Added `HelpDoc` help document skip -* (2023.05.30) Fix to Serie name with `_` line causing `Legend` to not fire (#252) (by __svr2kos2__) +* (2023.05.30) Fixed Serie name with `_` line causing `Legend` to not fire (#252) (by __svr2kos2__) * (2023.05.10) Added `MinMaxAuto` range type for `Axis` * (2023.05.10) Added support for `Clip` for `Line` * (2023.05.04) Fixed `Axis` setting` CeilRate `not taking effect in range -1 to 1 * (2023.05.04) Optimizes MinMax type range calculations for Axis -* (2023.05.04) Fix to AxisLabel displaying `Label` formatting incorrectly when the data is all floating point numbers less than 1 -* (2023.05.04) Fix to `Theme` being reset after modifying default theme parameters +* (2023.05.04) Fixed AxisLabel displaying `Label` formatting incorrectly when the data is all floating point numbers less than 1 +* (2023.05.04) Fixed `Theme` being reset after modifying default theme parameters * (2023.05.04) Added `Warning` when `Symbol` selects `Custom` type -* (2023.04.15) Fix to `DataZoom` may be abnormal in multiple charts (#252) -* (2023.04.14) Fix to `Tooltip` may be abnormal when there is only one data -* (2023.04.14) added `BaseChart`s `TriggerTooltip()` interface to try to trigger `ToolTip` +* (2023.04.15) Fixed `DataZoom` may be abnormal in multiple charts (#252) +* (2023.04.14) Fixed `Tooltip` may be abnormal when there is only one data +* (2023.04.14) Added `BaseChart`s `TriggerTooltip()` interface to try to trigger `ToolTip` * (2023.04.12) Optimizes` RadarCood `setting` startAngle `with text following the adjustment position * (2023.04.12) Added `Radar` support for wildcard `{b}` * (2023.04.11) Fixed an issue where Inspector could be abnormal when dynamically adding components @@ -153,7 +210,7 @@ Log details: * (2022.11.26) Fixed an exception when selecting `DataZoom` from right to left * (2022.11.20) Rename `UdpateXAxisIcon()` interface to `UpdateXAxisIcon()` (#235) * (2022.11.12) Added `Pie` `LabelLine` support `Symbol` -* (2022.11.12) added `DataZoom` `MarqueeStyle` support box selection area +* (2022.11.12) Added `DataZoom` `MarqueeStyle` support box selection area * (2022.11.10) Optimized area color fill effect for `Radar` when type is` Single ` * (2022.11.04) Fixed exception after itemFormatter `Tooltip` set wildcard `{d}` @@ -217,7 +274,7 @@ Details: * (2022.09.06) Added support for `SerieSymbol` `minSize` and `maxSize` parameters to set maximum and minimum sizes * (2022.09.06) Added support for `showStartLine` and `showEndLine` parameters for `AxisSplitLine` to set whether to display the first splitter * (2022.09.06) Added `Heatmap` support for different patterns via `symbol` -* (2022.09.05) added `Heatmap` `heatmapType` support for setting `Data` and `Count` two different mapping methods of Heatmap +* (2022.09.05) Added `Heatmap` `heatmapType` support for setting `Data` and `Count` two different mapping methods of Heatmap * (2022.09.05) Optimizes `Tooltip` when indicating numerical axis in thermograph * (2022.09.02) Added `onPointerEnterPie` callback support * (2022.09.02) Optimize the HeatmapChart ` @@ -227,7 +284,7 @@ Details: * (2022.08.29) optimizes `YAxis` Max/min calculations when `DataZoom` is enabled * (2022.08.29) optimized `CandlestickChart` massive data rendering * (2022.08.28) fixed an issue where `LineChart` does not appear properly in the case of stacking and custom Y-axis range -* (2022.08.26) added `Legend` new icon type `Candlestick` +* (2022.08.26) Added `Legend` new icon type `Candlestick` * (2022.08.26) optimizes` CandlestickChart `performance and adjusts related` AddData() `interface parameters * (2022.08.26) Added support for setting different display positions in Tooltip's `position` parameter * (2022.08.26) Delete the `fixedXEnable` and `fixedYEnable` arguments of Tooltip @@ -259,7 +316,7 @@ Details: * (2022.08.10) Optimized font synchronization for Theme * (2022.08.10) optimizes the default `layer` of Chart to `UI` * (2022.08.09) optimizes the `Time` timeline of `Axis` -* (2022.08.09) added AreaStyle `innerFill` parameter to support filling convex polygons +* (2022.08.09) Added AreaStyle `innerFill` parameter to support filling convex polygons * (2022.08.08) Optimized the maintenance of data item indexes in `Serie`, added detection and repair functions, and fixed related problems * (2022.07.29) Fixed `Unity` version compatibility: Chart creation exception after some versions import * (2022.07.29) Add `Axis` to` Time `timeline, support sub-scale and sub-divider @@ -273,10 +330,10 @@ Details: * (2022.07.22) Omit the `Emphasis`,` EmphasisItemStyle `, `EmphasisLabelStyle`, `EmphasisLabelLine` component * (2022.07.20) Added `Since` feature support for classes * (2022.07.20) fixed the `showStartLabel` and `showEndLabel` parameter Settings for `AxisLabel` not taking effect when `Axis` is on the` Value `Axis -* (2022.07.19) added `Axis` to` MinorSplitLine `to set the Axis degree divider -* (2022.07.19) added `Axis` `MinorTick` to set the Axis sub-scale +* (2022.07.19) Added `Axis` to` MinorSplitLine `to set the Axis degree divider +* (2022.07.19) Added `Axis` `MinorTick` to set the Axis sub-scale * (2022.07.17) Add the `smooth` parameter for Radar to set the smooth curve -* (2022.07.15) added DataZoom support for the `Time` timeline +* (2022.07.15) Added DataZoom support for the `Time` timeline ## v3.1.0 @@ -287,7 +344,7 @@ Details: * (2022.07.04) Added the axisMaxSplitNumber parameter of `Settings` to set the maximum number of partitions for `Axis` * (2022.07.04) Fixed Axis` Tick `drawing position after setting `offset`(#209) * (2022.07.03) Optimize the `AxisLabel` formatterFunction custom delegate -* (2022.07.03) added the `onZero` parameter of `AxisName` to support setting the coordinate AxisName and position to match the Y-axis 0 scale (#207) +* (2022.07.03) Added the `onZero` parameter of `AxisName` to support setting the coordinate AxisName and position to match the Y-axis 0 scale (#207) * (2022.07.02) Fixed bug where `Legend` was not working when `PieChart` was being created dynamically with code (#206) * (2022.07.02) Fixed `YAxis` AxisLabel setting `onZero` not working * (2022.07.02) Fixed `AxisLabel` code refreshing after setting `distance` property diff --git a/Documentation~/en/tutorial01.md b/Documentation~/en/tutorial01.md index 621a4e0d..bf2e710f 100644 --- a/Documentation~/en/tutorial01.md +++ b/Documentation~/en/tutorial01.md @@ -1,85 +1,103 @@ -# 教程:5分钟上手 XCharts 3.0 +--- +title: Introductory tutorial: Get started with XCharts 3.0 in 5 minutes +sidebar_position: 11 +slug: /tutorial01 +--- -## 获取和导入 XCharts +# Tutorial: Get started with XCharts 3.0 in 5 minutes -XCharts可通过以下任意一种方式导入到项目: +> Note: This tutorial is for XCharts 3.x version only -- 直接将XCharts源码到项目 +## What do I need to know before using XCharts - 下载好XCharts源码后,直接将XCharts目录拷贝到Unity项目工程的Assets目录或Packages目录下,编译通过后即可使用。 +- Have used Unity, know the basic operation of Unity. +- Understand UGUI and can use UGUI. +- Understand MonoBehavior script usage in Unity, know how to hang scripts, manipulate scripts with code. -- 通过`Assets/Import Package`导入XCharts +## Get and import XCharts - 下载好XCharts的.unitypackage文件后,打开Unity,菜单栏 Assets-->Import Package-->选中.unitypackage导入即可开始使用XCharts。 +XCharts can be imported into a project in any of the following ways: -- 通过`Package Manager`导入XCharts +- Source XCharts directly into the project - 对于Unity 2018.3以上版本,可通过 Package Manager来导入XCharts,打开Package Manager后,通过 `Add package form git URL...`,输入XCharts3.0的GitHub URL: `https://github.com/XCharts-Team/XCharts.git#3.0` 稍等片刻后即可使用XCharts。 + After downloading the XCharts source code, copy the XCharts directory directly to the Assets directory of the Unity project. - 也可以直接将package加入到`manifest.json`文件:打开`Packages`目录下的`manifest.json`文件,在`dependencies`下加入: +- Import XCharts through `Assets/Import Package` + + After downloading the.unitypackage file for XCharts, open Unity and go to the menu bar Assets--> Import Package--> Select.unitypackage import to start using XCharts. + +- Import XCharts through the Package Manager + + For Unity 2018.3 and later, XCharts can be imported through the Package Manager. After opening the Package Manager, run the `Add package form git URL...`, input XCharts dead simple URL: ` https://github.com/XCharts-Team/XCharts.git use XCharts after ` wait a moment. + + You can also add the package directly to the manifest.json file: Open the manifest.json file in the Packages directory and add it under dependencies: ``` json - "com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git#3.0", + "com.monitor1394.xcharts" : "https://github.com/XCharts-Team/XCharts.git", ``` - 如需更新`XCharts`,删除`manifest.json`文件(部分Unity版本可能是packages-lock.json文件)的`lock`下的`com.monitor1394.xcharts`相关内容即会重新下载编译。 + To update XCharts, remove com.monitor1394.xcharts from the manifest.json file under lock (some versions of Unity may be packages-lock.json) and re-download and compile. + +- Recommended daemon into XCharts (not required) -## 添加一个简单图表 + [XCharts Daemon](https://github.com/XCharts-Team/XCharts-Daemon) can ensure update compilation is normal, when the local open TextMeshPro or NewInputSystem would be very useful. After importing Xchart-daemon into a project, when updating XCharts, the Daemon will automatically refresh asmdef according to the status of local TMP, etc., to ensure normal compilation and facilitate the execution of automated processes such as CI-CD. -在`Hierarchy`视图下右键或菜单栏`GameObject`下拉选择`XCharts->LineChart`,即可快速创建一个默认的折线图出来: +## Add a simple chart + +Right-click in `Hierarchy` view or menu bar `GameObject` drop down and select `XCharts->LineChart`, can quickly create a default line chart out: ![linechart1](img/tutorial01_linechart1.png) -## 添加多个Seire +## Add multiple Seire -在`Inspector`视图,找到`LineChart`的面板,通过`Add Serie`按钮,可以添加第二条`Line`折线: +In the Inspector view, locate LineChart's panel, and with the `Add Serie` button, you can add a second Line line: ![op_addserie](img/tutorial01_addserie.png) ![linechart2](img/tutorial01_linechart2.png) -## 添加其他组件 +## Add other components -默认图表没有`Legend`,需要`Legend`组件可通过`Add Component`按钮添加: +The default chart does not have a `Legend`, and a `Legend` Component can be added via the `Add Component` button: ![op_addcomponent](img/tutorial01_addcomponent.png) -## 添加Serie组件 +## Add Serie components -Serie只自带了几个常见的组件,其他组件要根据需求额外添加,不同的Serie支持不同的额外组件。比如,需要给折线图区域填充颜色,可单独给`Serie`添加`AreaStyle`组件: +Serie comes with only a few common components, and others are added as needed. For example, if you need to fill a line chart area with color, you can add a separate `AreaStyle` component to Serie: ![op_addseriecomponent](img/tutorial01_addseriecomponent.png) ![linechart3](img/tutorial01_linechart3.png) -## 添加SerieData组件 +## Add the SerieData component -如果需要个性化定制每个数据项的配置,可以单独给每个`SerieData`添加`Component`。比如我们给折线图的第二个数据单独显示`Label`: +If you need to personalize the configuration of each data item, you can add a Component to each SerieData separately. For example, we give the second data of the line chart a separate display `Label`: ![op_addseriedatacomponent](img/tutorial01_addseriedatacomponent.png) ![linechart4](img/tutorial01_linechart4.png) -## 更多组件和配置参数 +## More components and configuration parameters -功能越丰富就越需要更多的组件和参数支持。XCharts有多达几十种的主组件和子组件,每个组件有几个至几十个不等的可配置参数,以支持各种灵活而复杂的功能。 +XCharts has been iteratively optimized and now has dozens of main and sub-components, each with a few to dozens of configurable parameters to support a variety of flexible and complex functions. -首次接触XCharts者可在 `Inspector` 视图下可以添加和调整各个组件,`Game` 视图会实时反馈调整的效果,以熟悉各种组件实现的效果。各个组件的详细参数说明可查阅[XCharts配置项手册](configuration.md)。 +Using XCharts for the first time, you can add various charts in the `Inspector` view, add or adjust the components in the chart, and the `Game` view gives real-time feedback on the effects of adjustments to familiarize yourself with the use of various components. Detailed parameter descriptions of each component can be found in the [XCharts Configuration](Configuration.md). -## 如何快速调整参数 +## How to adjust parameters quickly -`XCharts`是配置参数驱动。想要什么效果,你只需要去调整对应组件下的配置参数就可以,不需要去改`Hierarchy`视图下的节点,因为那些节点是由`XCharts`内部根据配置参数生成的,即使改了也会在刷新时被还原回来。 +XCharts is configuration and data driven. Want what effect, only need to adjust the configuration parameters under the corresponding component can be, do not need to change the nodes under the `Hierarchy` view, because those nodes are generated by the `XCharts` internal according to the configuration and data, even if changed will be restored in the refresh. -快速定位你想要改的效果对应的组件。这就需要对组件有一定的了解。比如我们想要让X轴的轴线末端显示箭头,如何定位?第一步,X轴定位到`XAxis0`;第二步,轴线定位到`AxisLine`;最后,再去看`AxisLine`组件下有没有这样的参数可以实现这个效果。 +How to quickly locate the component corresponding to the effect you want to change requires a certain understanding of the component. For example, if we want to show an arrow at the end of the X-axis, how do we position it? First, position the X-axis to `XAxis0`; Second, locate the axis to `AxisLine`; Finally, check to see if there are any parameters in the AxisLine component that can achieve this effect, and check [XCharts configuration](Configuration.md) for uncertain parameters. -`XCharts`提供从全局`Theme`、系列`Serie`、单个数据项`SerieData`全方位的参数配置。优先级从大到小为:`SerieData`->`Serie`->`Theme`。以`ItemStyle`的颜色为例: +`XCharts` provides a full range of parameter configuration from the global` Theme `, series` Serie `, and single data item `SerieData`. The priority in descending order is: `SerieData` -> `Serie` -> `Theme`. Take the color of `ItemStyle` for example: -1. 如果`SerieData`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 -2. 如果`Serie`的`ItemStyle`配置有非`0000`颜色值,则优先用这个颜色值。 -3. 否则颜色值取自主题`Theme`的`Color Palette`。 +1. If the `ItemStyle` of `SerieData` has a color value other than `0000`, this color value is preferred. +2. If the ItemStyle of `Serie` is configured with a color value other than `0000`, this color value takes precedence. +3. Otherwise, the Color value is taken from the Color Palette of the Theme. -通常配置的颜色值为0000时表示用主题默认颜色;配置参数的值为0或null时表示用主题默认配置。 +Usually, `0000` indicates the theme default color, and 0 or null indicates the theme default. -## 用代码添加折线图 +## Add line charts with code -给`gameObject`挂上`LineChart`脚本: +Attach the `LineChart` script to the gameObject: ```C# var chart = gameObject.GetComponent(); @@ -89,22 +107,21 @@ if (chart == null) chart.Init(); } ``` -用代码生成的Chart需要调用一次Init()。 -调整大小: +Resize: ```C# chart.SetSize(580, 300);//代码动态设置尺寸,或直接操作chart.rectTransform,或直接在Inspector上改 ``` -设置标题: +Set the title: ```C# var title = chart.EnsureChartComponent(); title.text = "Simple Line"; ``` -设置提示框和图例是否显示: +Set whether prompt boxes and legends are displayed: ```C# var tooltip = chart.EnsureChartComponent<Tooltip>(); @@ -114,7 +131,7 @@ var legend = chart.EnsureChartComponent<Legend>(); legend.show = false; ``` -设置坐标轴: +Set axes: ```C# var xAxis = chart.EnsureChartComponent<XAxis>(); @@ -126,14 +143,14 @@ var yAxis = chart.EnsureChartComponent<YAxis>(); yAxis.type = Axis.AxisType.Value; ``` -清空默认数据,添加`Line`类型的`Serie`用于接收数据: +Clear default data and add `Line` type `Serie` for receiving data: ```C# chart.RemoveData(); chart.AddSerie<Line>("line"); ``` -添加10个数据: +Add 10 data: ```C# for (int i = 0; i < 10; i++) @@ -143,56 +160,59 @@ for (int i = 0; i < 10; i++) } ``` -这样一个简单的折线图就出来了: +So a simple line chart comes out: ![tutorial01_linechart_simple](img/tutorial01_linechart_simple.png) -如果一个Chart里面有多个系列时,则Axis的data只需要加一次,不要多个循环加重复了。记住:Axis的数据个数要和Serie的数据个数一致。 +If there are multiple series in a Chart, the data of Axis only needs to be added once, rather than repeated in multiple cycles. Remember: the number of data in Axis should be the same as the number in Serie. -完整代码请查阅`Examples`:`Example13_LineSimple.cs` +See `Examples`: `Example13_LineSimple.cs` for the complete code -你还可以用代码控制更多的参数,`Examples`下还有更多的其他例子,凡是`Inspector`上看到的可配置的参数,都可以通过代码来设置。[XCharts配置项手册](configuration.md)里面的所有参数都是可以通过代码控制的。 +You can also use code to control more parameters, there are more Examples under `Examples`, all the configurable parameters seen in the `Inspector` can be set by code. All parameters in [XCharts configuration](Configuration.md) can be controlled by code. -另外,除非定制,建议调用`Chart`下提供的`public`接口,特别是数据相关操作部分。这些接口内部会做一些关联处理,比如刷新图表等。常见的接口有: +In addition, unless customized, it is recommended to call the `public` interface provided under `Chart`, especially in the data-related operations section. These interfaces do some associated processing inside, such as refreshing charts. Common interfaces are: -1. `chart.ClearData()`:清空图表数据(不移除Series) -2. `chart.RemoveData()`:清除图表数据(会移除所有Serie) -3. `chart.AddSerie()`:添加Serie -4. `chart.AddXAxisData()`:添加X轴数据 -5. `chart.AddData()`:添加Serie数据 -6. `chart.UpdateData()`:更新Serie数据 -7. `chart.UpdateXAxisData()`:更新X轴数据 -8. `chart.UpdateDataName()`:更新Serie数据的名字 +1. `Chart.ClearData()` : Clear chart data (without removing Series) +2. `Chart.RemoveData()` : Clear chart data (will remove all Serie) +3. `chart.AddSerie()` : AddSerie +4. `chart.AddXAxisData()` : Add X-axis data +5. `chart.AddData()` : Adds Serie data +6. `chart.UpdateData()` : Updates Serie data +7. `chart.UpdateXAxisData()` : Updates the X-axis data +8. `chart.UpdateDataName()` : Updates the Serie data name -XCharts内部有自动刷新机制,但也是在一定条件下。如果自己调用了内部组件的接口,碰到组件没有刷新,确实找不到原因的话,可以用以下两个接口强制刷新: +XCharts has an automatic refresh mechanism inside, but it only triggers under certain conditions. If you call the interface of the internal component, encounter the component did not refresh, and indeed can not find the reason, you can use the following two interfaces to force refresh: -1. `chart.RefreshAllComponent()`:刷新图表组件,会重新初始化所有组件,不建议频繁使用。 -2. `chart.RefreshChart()`:刷新图表绘制,只刷新绘制部分,不会刷新组件文本,位置等部分。 +1. `chart.RefreshAllComponent()` : refresh chart component, to initialize all of the components, often is not recommended. +2. `chart.RefreshChart()` : refreshes the chart drawing, only the drawing part is refreshed, and the component text, position, etc., is not refreshed. +3. Individual components can also refresh only themselves by `SetAllDirty()`. -## 使用TextMeshPro +## Use TextMeshPro -XCharts支持TextMeshPro,但默认是不开启的,需要自己手动切换。可通过以下方式开启和关闭: +XCharts supports TextMeshPro, but it is disabled by default and needs to be switched manually. It can be turned on and off in the following ways: ![textmeshpro1](img/tutorial01_textmeshpro.png) -开启后需要设置好TextMeshPro要用的全局字体,也可以在主题Theme里单独设置: +After opening, you need to set the global font used by TextMeshPro, or you can set it separately in the Theme: ![textmeshpro-font](img/tutorial01_textmeshpro_font.png) -建议在项目初就规划好是否使用TextMeshPro,并设置好字体。在已有很多图表的情况下切换TMP时,可能某些图表无法自动刷新,可以手动点击`Rebuild Chart Object`按钮来重建图表,即可正常初始化。 +It is recommended to plan whether to use TextMeshPro at the beginning of the project and set the font. When switching TMP with many existing charts, some charts may not refresh automatically. You can manually click the `Rebuild Chart Object` button to rebuild the chart, which can be initialized normally. + +When updating XCharts for TMP projects, you may encounter problems with missing TMP references and failing to compile. These problems can be solved in one of two ways: -开启了TMP项目在更新XCharts时,可能会碰到丢失了TMP引用而无法编译通过的问题,可通过以下两种方式解决: +1. Find `XCharts.Runtime.asmdef` and `XCharts.Editor.asmdef` and manually add references to `TextMeshPro` +2. Remove the `dUI_TextMeshPro` macro for Scripting Define Symbols in PlayerSetting -1. 找到`XCharts.Runtime.asmdef`和`XCharts.Editor.asmdef`,手动加上 `TextMeshPro`的引用 -2. 移除`PlayerSetting`中`Scripting Define Symbols`的`dUI_TextMeshPro`宏 +Version `3.8.0` after adding daemon[XCharts - Daemon](https://github.com/XCharts-Team/XCharts-Daemon), will be XCharts-Daemon import project, When updating XCharts, the daemon automatically refreshes the asmdef based on the locally enabled TMP to ensure proper compilation. -## 用代码改图表参数 +## Change chart parameters with code -`Inspector`上看到的所有参数都可以用代码来修改,关键是要定位好你要改的参数是在组件上、还是serie上、还是在具体的数据项上改。 +All parameters seen on Inspector can be modified with code, the key is to identify whether the parameters you want to change are on the component, on the Serie, or on the specific data item SerieData. -### 改主组件上的参数 +### Change the parameters on the main component -需要先获取组件,再修改里面的参数: +You need to obtain the component first, and then modify the parameters in it: ```C# var title = chart.EnsureChartComponent<Title>(); @@ -205,9 +225,11 @@ xAxis.boundaryGap = true; xAxis.type = Axis.AxisType.Category; ``` -### 改Serie的参数 +> Note: When the earlier version does not have the EnsureChartComponent() interface, GetOrAddChartComponent() is used. -新添加的Serie: +### Change Serie parameters + +For newly added Serie: ```C# var serie = chart.AddSerie<Pie>(); @@ -219,7 +241,7 @@ serie.animation.dataChangeEnable = true; serie.roundCap = true; ``` -已存在的Serie: +For existing Serie: ```C# var serie = chart.GetSerie<Pie>(); @@ -231,7 +253,7 @@ serie.animation.dataChangeEnable = true; serie.roundCap = true; ``` -给Serie添加额外组件: +Add additional components to Serie: ```C# serie.EnsureComponent<AreaStyle>(); @@ -240,7 +262,7 @@ var label = serie1.EnsureComponent<LabelStyle>(); label.offset = new Vector3(0,20,0); ``` -### 改数据项SerieData上的参数 +### Change the parameter on the data item SerieData ```C# var serieData = chart.AddData(0, 20); @@ -250,4 +272,4 @@ serieData.radius = 10; var itemStyle = serieData.EnsureComponent<ItemStyle>(); //给数据项添加ItemStyle组件 itemStyle.color = Color.blue; -``` +``` \ No newline at end of file diff --git a/Documentation~/zh/changelog.md b/Documentation~/zh/changelog.md index fd6aa2ef..9659d0d4 100644 --- a/Documentation~/zh/changelog.md +++ b/Documentation~/zh/changelog.md @@ -6,6 +6,7 @@ slug: /changelog # 更新日志 [master](#master) +[v3.8.0](#v380) [v3.7.0](#v370) [v3.6.0](#v360) [v3.5.0](#v350) @@ -67,6 +68,8 @@ slug: /changelog ## master +## v3.8.0 + 版本要点: * 重构`Animation`动画系统,增加`新增动画`和`交互动画`的支持 @@ -75,10 +78,12 @@ slug: /changelog * 完善`Chart`的鼠标交互回调 * 增加`LabelLine`可固定横坐标的功能 * 增加`GridLayout`网格布局组件 -* 修复千年老问题:开启TMP后更新版本会报错的问题 +* 增加`Tooltip`的`Auto`类型 +* 优化和修复若干其他问题 日志详情: +* (2023.09.03) 发布`v3.8.0`版本 * (2023.09.01) 增加`Tooltip`的`Auto`自动设置显示类型和触发类型 * (2023.08.29) 增加`Ring`的`gridIndex`支持设置指定网格 * (2023.08.29) 增加`Radar`的`gridIndex`支持设置指定网格 diff --git a/README-en.md b/README-en.md index 3438bdd1..3c0f8a23 100644 --- a/README-en.md +++ b/README-en.md @@ -9,8 +9,7 @@ <br> Unity数据可视化图表插件。 <br> - <a href="https://github.com/XCharts-Team/XCharts">中文</a> - <a href="https://github.com/XCharts-Team/XCharts">中文</a> + <a href="https://github.com/XCharts-Team/XCharts">中文文档</a> </p> <p align="center"> <a href="https://github.com/XCharts-Team/XCharts/blob/master/LICENSE"> @@ -44,7 +43,7 @@ </a> </p> -A powerful, easy-to-use, configurable charting and data visualization library for Unity. Supporting line, bar, pie, radar, scatter, heatmap, ring, candlestick, polar, liquid and other common chart. Also support 3d pie, 3d bar, 3d pyramid, funnel, gauge, liquid, pictorialbar, gantt, treemap and ther extended chart. +A powerful and easy-to-use data visualization library for Unity. It supports more than ten built-in charts, including line, bar, pie, radar, scatter, heatmap, ring, candlestick, polar, parallel coordinates, as well as extended charts such as 3d pie, 3d bar, 3d pyramid, funnel, gauge, liquid, pictorialbar, gantt, and treemap. [XCharts3.0 Homepage](https://xcharts-team.github.io) @@ -57,52 +56,25 @@ A powerful, easy-to-use, configurable charting and data visualization library fo ## Features -* Rich built-in examples and templates, parameter visualization configuration, effect real-time preview, pure code drawing. -* Support line, bar, pie, radar, scatter, heatmaps, gauge, ring, polar, liquid and other common chart. -* Support line graph, curve graph, area graph, step graph and other LineChart. -* Support parallel bar, stack bar, stack percentage bar, zebra bar and other BarChart. -* Support ring, rose and other PieChart. -* Support line-bar chart, scatter-line chart and other combination chart. -* Support solid line, curve, ladder line, dotted line, dash line, dot line, double dot line and other lines. -* Support custom theme, built-in theme switching. -* Support custom chart content drawing, drawing points, line, curve, triangle, quadrilateral, circle, ring, sector, border, arrow and other drawing API. -* Support interactive operations such as data filtering, view zooming and detail display on PC and mobile terminals. -* Support 10,000-level big data rendering. -* Support TextMeshPro. - -## XCharts3.0 new feature - -* Added `Time` axis. -* Added `SingleAxis`. -* Added multiple coordinate systems: `Grid`, `Polar`, `Radar`, `SingleAxis`. -* Added multiple animation methods. -* Added multiple chart interactions. -* Added internationalization support. -* Added `Widgets`. -* Added multiple extension charts. - -## XCharts3.0 improvements over XCharts2.0 - -* More robust underlying framework. -* More powerful performance. -* Smaller serialized files. -* Better interactive experience. -* More component support. -* More powerful ability to self-report text. -* More reasonable component adjustments. -* More flexible component insertion and removal. -* More efficient secondary development. -* Richer Demo examples. - -## XCharts3.0 and 2.0 data comparison - -| Case | XCharts2.0 | XCharts3.0 | Note | -| -- | -- | -- | -- | -| Fps of 2000 data line chart | ` 20 ` | ` 83 ` | Performance improvements `3` times | -| Vertices of 2000 data line chart | ` 36.5 k ` | ` 6.7 k ` | Vertices reduce `4` times | -| Prefab size of 2000 data line chart | ` 11.1 MB ` | ` 802 KB ` | Serialized file size to reduce `10` times | -| Max data of a single line chart | ` 4.1 k ` | ` 19 k ` | Single Serie data capacity improvement `4` times | -| Num of chart support | ` 11 ` | ` 23 ` | More than `1` times as many chart are supported | +* __Pure code rendering__: The chart is completely rendered with pure code, without the need for additional texture or shader resources. +* __Visual configuration__: Visual configuration of parameters with real-time preview of the effect, and support for dynamic modification of configuration and data during runtime. +* __High customizability__: Supports arbitrary adjustments from theme and configuration parameters; supports custom drawing, callback functions, and custom implementations of charts. +* __Multiple built-in charts__: Supports various built-in charts such as line charts, bar charts, pie charts, radar charts, scatter plots, heat maps, polar charts, K-line charts, parallel coordinates, etc. +* __Multiple extended charts__: Supports extended charts such as 3D column charts, 3D pie charts, funnel charts, pyramids, dashboards, water level charts, iconic bar charts, Gantt charts, and tree maps. +* __Multiple extended features__: Supports extended UI components such as tables and statistical values. +* __Multiple chart combinations__: Supports arbitrary combinations of built-in charts, with multiple same or different types of charts displayed simultaneously in the same chart. +* __Various coordinate systems__: Supports coordinate systems such as Cartesian coordinates, polar coordinates, and single axes. +* __Rich components__: Supports common components such as titles, legends, tooltips, markings, marking areas, data area zooming, and visual mapping. +* __Rich line charts__: Supports various line charts such as straight line charts, curved line charts, dashed line charts, area charts, step line charts, etc. +* __Rich bar charts__: Supports various bar charts such as stacked bar charts, stacked percentage bar charts, zebra bar charts, and capsule bar charts. +* __Rich pie charts__: Supports various pie charts such as ring charts, rose charts, ring rose charts, etc. +* __Rich lines__: Supports various lines such as solid lines, curves, step lines, dashed lines, dot lines, dotted lines, and double dot-dashed lines. +* __Custom drawing__: Supports custom chart content drawing with powerful drawing APIs for drawing points, lines, and other graphics. +* __Large data rendering__: Supports rendering of tens of thousands of data points; supports sampling rendering; special simplified charts support better performance. +* __Custom themes__: Supports theme customization and import/export; includes both light and dark default themes. +* __Animations and interactions__: Supports various animations such as fade-in animation, fade-out animation, change animation, addition animation, and * interactive animation; supports interactive operations such as data filtering, view zooming, and detailed display on multiple platforms. +* __Third-party extensions__: Supports integration with TexMeshPro and New Input System. +* __Version and compatibility__: Supports all Unity versions above 5.6 and runs on all platforms. ## Screenshots @@ -110,34 +82,54 @@ A powerful, easy-to-use, configurable charting and data visualization library fo ![extendchart](Documentation~/en/img/readme_extendchart.png) -For more examples, see [XCharts-Demo](https://github.com/XCharts-Team/XCharts-Demo), You can also go to [Online Demo](https://xcharts-team.github.io/examples/) to see the running effect of `WebGL`. +## Attention + +* `XCharts3.0` is not fully compatible with `XCharts2.0` version, upgrading `3.0` may require some code adjustments, and some chart configurations need to be readjusting. It is recommended that old projects can continue to use `XCharts2.0`, and new projects are recommended to use `XCharts3.0`. +* `XCharts2.0` enters the maintenance phase, and only serious `bugs` will be fixed later, in principle, no more new features will be added. +* `XCharts` theoretically supports `Unity 5.6` and above, but due to limited version testing, it is inevitable to slip up, and version compatibility issues can be raised. +* This repository only contains `XCharts` source code, does not contain `Demo` sample section. Need to look at ` Demo ` please go to the sample source code [XCharts - Demo](https://github.com/XCharts-Team/XCharts-Demo) repo. You can also view the running effect of `WebGL` in your browser [Online Demo](https://xcharts-team.github.io/examples/). ## Use -1. Import `XCharts` unitypackage or source code into the project. -2. Right-click `Hierarchy` view and choose `XCharts->LineChart` to create a default LineChart. -3. You can adjust the parameters of each component in `Inspector` and see the real-time effects in `Game` view. +* Import `XCharts` unitypackage or source code into the project. +* Right-click `Hierarchy` view and choose `XCharts->LineChart` to create a default LineChart. +* You can adjust the parameters of each component in `Inspector` and see the real-time effects in `Game` view. +* For more details, see [[XCharts Tutorial: 5-minute tutorial]](Documentation~/zh/tutorial01.md) +* For the first time, it is recommended to read the tutorial carefully. + +## Branch -See more tutorial: [XCharts tutorial: 5 minutes overhand tutorial](Documentation~/en/tutorial01.md) +* `master` : indicates the development branch. The latest changes and new features are first committed to the `master` branch, and after some time from the `master` branch `merge` to the `3.0` branch, and the `release` version. +* `3.0` : Stable branch of XCharts 3.0. It is generally updated once a month, with the latest changes from the `master` branch `merge`, and the `release` version is released. +* `2.0` : A stable branch of XCharts 2.0. With Demo, currently no longer maintenance, only to modify serious bugs. +* `2.0-upm` : Stable UMP branch of XCharts 2.0. Only the Package part is included without Demo. It is dedicated to the UMP and is not maintained. +* `1.0` : Stable branch of XCharts 1.0. With Demo, no maintenance. +* `1.0-upm` : stable UMP branch of XCharts 1.0. No Demo, no maintenance. ## FAQ -1. Is `XCharts` free to use? +* Is `XCharts` free to use? A: `XCharts` uses the `MIT` licence and is free to use. You can also subscribe to `VIP` to enjoy more value-added services. -2. Does `XCharts` support code to dynamically add and modify data? Does it support getting data from `Excel` or a database? +* Does `XCharts` support code to dynamically add and modify data? Does it support getting data from `Excel` or a database? A: Support code to dynamically add and modify data, but data needs to be parsed or retrieved by itself, and then added to `XCharts` by calling the public interface of `XCharts`. -3. Does this plugin work on other platforms (e.g. Winform or WPF) besides Unity? +* Does this plugin work on other platforms (e.g. Winform or WPF) besides Unity? A: It is currently only supported on Unity. Theoretically any version of Unity that supports `UGUI` can run `XCharts`. +* What about the jags? What magnitude of data is supported? +A: XCharts is based on UGUI implementation, so the problems encountered in UGUI will also exist in XCharts. For example, the sawtooth problem, such as the number of vertices in `Mesh` exceeds `65535`. Solutions to these two problems can be found in [Q&A 16](Documentation~/zh/faq.md) and [Q&A 27](Documentation~/zh/faq.md). +Due to the `Mesh` of the `65535` vertex limit, the current `XCharts` single `Line` supports about `20,000` of data, of course, open sampling can support more data to draw, but at the same time it will consume more CPU. + ## Changelog -[Changelog](Documentation~/en/changelog.md) +* [Changelog](Documentation~/en/changelog.md) ## Licenses -[MIT License](https://github.com/XCharts-Team/XCharts/blob/master/LICENSE.md) +* [MIT License](https://github.com/XCharts-Team/XCharts/blob/master/LICENSE.md) +* Free commercial, secondary development +* The extended charts and advanced features sections require a separate purchase license ## Other diff --git a/Runtime/Internal/XChartsMgr.cs b/Runtime/Internal/XChartsMgr.cs index c19090a0..afddde51 100644 --- a/Runtime/Internal/XChartsMgr.cs +++ b/Runtime/Internal/XChartsMgr.cs @@ -22,7 +22,7 @@ class XChartsVersion public static class XChartsMgr { public static readonly string version = "3.8.0"; - public static readonly int versionDate = 20230801; + public static readonly int versionDate = 20230903; public static string fullVersion { get { return version + "-" + versionDate; } } internal static List<BaseChart> chartList = new List<BaseChart>(); diff --git a/package.json b/package.json index ab34ba8c..bc13bf59 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "name": "com.monitor1394.xcharts", "displayName": "XCharts", "version": "3.8.0", - "date": "20230801", - "checkdate": "20230801", + "date": "20230903", + "checkdate": "20230903", "desc": "如果 XCharts 对您有帮助,希望您能在 Github 上点 Star 支持,非常感谢!", "unity": "2018.3", "description": "A charting and data visualization library for Unity.",