
数据可视化图表库UI组件【免费下载链接】XChartsA charting and data visualization library for Unity. Unity数据可视化图表插件。项目地址https://gitcode.com/gh_mirrors/xc/XCharts点击查看免费下载本文以 XCharts 官方英文 README 为纲系统讲解这款 Unity 图表插件的定位、十二项核心特性、内置与扩展图表体系、组件 Serie 的源码架构与纯代码渲染机制并给出从导入、创建图表到代码动态操作数据的完整上手路径。读完本文你将掌握如何在 Unity 项目中引入 XCharts、看懂其底层绘制管线并通过 API 完成动态数据更新、主题切换、自定义绘制与事件交互。XCharts 是一款基于 UGUI 的 Unity 数据可视化图表插件A powerful, easy-to-use, configurable charting and data visualization library for Unity。它支持折线、柱状、饼图、雷达、散点、热力、环形、K 线、极坐标、平行坐标等十多种内置图表以及 3D 饼图、3D 柱图、漏斗、仪表盘、水位图、甘特图、桑基图等十多种扩展图表。当前仓库版本为v3.15.0发布日期 2026-03-01见 package.json 与 XChartsMgr.cs 中public static readonly string version 3.15.0;兼容 Unity 5.6 及以上版本核心库基于 MIT 协议开源。一、概述XCharts 解决什么问题XCharts 的目标是填补 Unity 生态中专业级数据可视化的空白无需额外贴图或 Shader 资源图表完全由代码生成顶点网格Mesh绘制。这与传统用 Image 贴图标图的方案不同——从源码结构看其绘制核心 Painter 继承自UnityEngine.UI.MaskableGraphic在OnPopulateMesh(VertexHelper)中通过委托onPopulateMesh把坐标点、线、面直接写进 UGUI 的顶点流这正是 README 所称 Pure Code Rendering: Charts are rendered with pure code, eliminating the need for extra texture or shader resources 的实现依据。README 中 Overview 一节列出的能力可以归纳为三类内置图表Built-in Chartsline、bar、pie、radar、scatter、heatmap、ring、candlestick、polar、parallel coordinates扩展图表Extension Charts3d pie、3d bar、3d pyramid、funnel、gauge、liquid、pictorialbar、gantt、treemap、sankey、line3d、graph平台与兼容Compatible with all Unity versions above 5.6 and runs on all platforms见 package.json 中unity: 2018.3为 UPM 最低声明README 徽章与正文则以 5.6 为下限。二、Key Features十二项核心特性与源码佐证README 的 Key Features 共 12 条。下面逐条对应到仓库源码说明其可验证的落地方式README 特性含义源码/仓库佐证Pure Code Rendering纯代码渲染无贴图/Shader 依赖Painter.cs 基于MaskableGraphic生成网格Visual ConfigurationInspector 可视化配置 运行时动态修改Editor/MainComponents 与 Editor/ChildComponents 中各类 Editor/DrawerBaseChart标记[ExecuteInEditMode]使编辑期参数即时生效见 LineChart.csHigh Customizability主题与参数全面可调支持自定义绘制与回调主题资产 Resources/XCTheme-Default.asset、Resources/XCTheme-Dark.asset回调 API 见 BaseChart.API.csBuilt-in and Extension Charts内置图表 3D/特殊扩展图表内置见 Runtime/Chart扩展图表按 README 说明为独立包见扩展生态小节Multiple Chart Combinations同一实例内组合多个同/异类图表BaseChart维护ListSerie m_Series与ListMainComponent m_Components见 BaseChart.csVarious Coordinate Systems直角坐标、极坐标、单轴等Runtime/Coord 下 Grid、Grid3D、Polar、Parallel、Calendar、SingleAxis 六个坐标系目录Rich Components标题、图例、提示框等组件Runtime/Component 下 Title、Legend、Tooltip、DataZoom、VisualMap、MarkLine/MarkArea 等组件Custom Drawing点、线、面自定义绘图 APIUGL.csUGUI Graphics Library示例 Example12_CustomDrawing.csLarge Data Rendering万级数据点支持采样渲染BaseChart.SetMaxCache(int)设置可缓存的最大数据量见 BaseChart.API.csCustom Themes主题定制 内置明/暗两套默认主题XCThemeMgr.cs、Resources/XCSettings.assetAnimations and Interactions渐入/渐出/变更等动画与交互AnimationEnable/AnimationFadeIn/AnimationFadeOut/AnimationPause/AnimationResume/AnimationReset一揽子 API见 BaseChart.API.csThird-Party Extensions集成 TextMeshPro 与 New Input SystemRuntime/XCharts.Runtime.asmdef 配合 Editor 守护逻辑 XChartsDaemon.cs 自动刷新 asmdefVersion and CompatibilityUnity 5.6、全平台package.json 与 README 徽章说明2.1 可视化配置编辑期即时预览README 强调在 Inspector 中调参、Game 视图实时生效。从源码结构看各图表类如 LineChart.cs都标注了[ExecuteInEditMode]参数改动在编辑器模式下即触发重绘而编辑器侧的富文本配置面板由 Editor 目录下的MainComponentEditor、SerieEditor、各类*Drawer.cs如 TextStyleDrawer.cs、DataZoomEditor.cs构建形成运行时组件 编辑器面板的对称结构。2.2 多图表组合与坐标系BaseChart通过[ListForComponent(...)]/[ListForSerie(...)]序列化字段成组管理组件与系列例如 BaseChart.cs 中同时声明了m_GridsGridLayout、m_PolarsPolarCoord、m_RadarsRadarCoord、m_SingleAxesSingleAxis、m_ParallelsParallelCoord等列表并在运行时聚合为m_ComponentMapsDictionaryType, ListMainComponent。这意味着同一个图表对象可以并存多个坐标系实例同一或不同类型的 Serie 挂在同一图表下组合显示对应 README 的 Combine multiple charts of the same or different types within a single instance。三、内置图表清单从 Runtime/Chart 目录看类型体系README 宣称支持十多种内置图表。Runtime/Chart 目录下实际存在 13 个图表脚本类按基础类型 简化版大数据优化划分如下图表类文件说明LineChartLineChart.cs折线图含面积/平滑/堆叠/阶梯/虚线/时间轴/对数轴等预设方法BarChartBarChart.cs柱状图PieChartPieChart.cs饼图RadarChartRadarChart.cs雷达图ScatterChartScatterChart.cs散点图HeatmapChartHeatmapChart.cs热力图RingChartRingChart.cs环形图CandlestickChartCandlestickChart.csK 线图PolarChartPolarChart.cs极坐标图ParallelChartParallelChart.cs平行坐标图SimplifiedLineChartSimplifiedLineChart.cs简化线图面向大数据采样场景SimplifiedBarChartSimplifiedBarChart.cs简化柱图SimplifiedCandlestickChartSimplifiedCandlestickChart.cs简化 K 线图以LineChart为例其 DefaultChart() 在创建时自动EnsureChartComponentGridCoord()、XAxis、YAxis并填充一条默认 Serie 与 5 个类目轴数据——这与 README Creating a chart 后即刻有默认展示 的描述一致。它还提供了一组预设风格入口方法DefaultAreaLineChart()面积图、DefaultSmoothLineChart()平滑、DefaultStackLineChart()堆叠、DefaultStepLineChart()阶梯、DefaultDashLineChart()虚线、DefaultTimeLineChart()时间轴xAxis.type Axis.AxisType.Time、DefaultLogLineChart()对数轴yAxis.type Axis.AxisType.Log。这些方法展示了 XCharts 组件化 属性配置 的典型用法改变行为本质上是修改Serie/Axis的组件参数。扩展图表生态README Important Notes 明确 This repository contains only the XCharts source code3D 饼图、漏斗、仪表盘、甘特、桑基等扩展图表以独立包形式发布如 XCharts-Bar3DChart、XCharts-GaugeChart 等核心库仅包含上表所列内置图表。Demo 示例仓库XCharts-Demo同样独立于本仓库。四、核心架构BaseChart、Painter 与组件/Serie 分层要理解 XCharts 的纯代码渲染 可视化配置如何协同需要看 Runtime/Internal 下的三个核心文件。4.1 BaseChart图表基类与分层脚本BaseChartBaseChart.cspartial class是所有图表的基类派生链为BaseGraph - BaseChart - LineChart/BarChart/...。它被拆分为多个部分文件BaseChart.API.cs对外 API——属性访问器、回调、刷新/清数据、动画、主题、Tooltip 触发、JSON 导入导出BaseChart.Component.cs组件轴、图例、提示框等的管理与查找BaseChart.Serie.csSerie 的增删改与数据接口BaseChart.Draw.cs绘制流程与回调触发BaseChart.Custom.cs自定义绘制支持。BaseChart上的关键序列化字段揭示了其数据组织模型[AddComponentMenu(XCharts/EmptyChart, 10)] [ExecuteInEditMode] [RequireComponent(typeof(RectTransform), typeof(CanvasRenderer))] [DisallowMultipleComponent] public partial class BaseChart : BaseGraph, ISerializationCallbackReceiver { [SerializeField] protected string m_ChartName; [SerializeField] protected bool m_UseUtc true; [SerializeField] protected ThemeStyle m_Theme new ThemeStyle(); [SerializeField] protected Settings m_Settings; [SerializeField] protected bool m_ChartInited false; [SerializeField][ListForComponent(typeof(GridCoord))] private ListGridCoord m_Grids ...; [SerializeField][ListForComponent(typeof(XAxis))] private ListXAxis m_XAxes ...; [SerializeField][ListForSerie(typeof(Line))] private ListLine m_SerieLines ...; ... protected ListSerie m_Series new ListSerie(); protected ListMainComponent m_Components new ListMainComponent(); }以上为 BaseChart.cs 头部片段的节选从源码结构看[ListForComponent]/[ListForSerie]自定义特性配合OnBeforeSerialize中的字典m_TypeListForComponent、m_TypeListForSerie实现编辑器序列化的子对象列表与运行时统一ListSerie/ListMainComponent之间的映射。组件标题、图例、轴、缩放等与 Serie数据系列是平行的一等公民这正是多图表组合组件丰富特性的结构基础。4.2 Painter多层 Mesh 渲染管线Painter.cs 定义了渲染层[RequireComponent(typeof(CanvasRenderer))] public class Painter : MaskableGraphic { public enum Type { Base, Serie, Top } public ActionVertexHelper, Painter onPopulateMesh; public void Refresh() { m_Refresh true; } // 标记待刷新 protected override void OnPopulateMesh(VertexHelper vh) { vh.Clear(); if (m_OnPopulateMesh ! null) m_OnPopulateMesh(vh, this); } }从源码结构看一个图表拥有多个 Painter 实例并按层级区分Base 层坐标轴/背景、每个 Serie 独立的 Serie 层、Upper/Top 层Tooltip 等浮层。BaseChart暴露了RefreshChart()刷新全部 Painter与RefreshChart(int serieIndex)只刷新某个 Serie 层两级粒度数据变更后只需标记对应层下一帧重绘CheckRefresh中调用SetVerticesDirty从而避免全量重建——这是大数据场景下性能的关键设计。BaseChart还提供SetBasePainterMaterial/SetSeriePainterMaterial/SetUpperPainterMaterial/SetTopPainterMaterial允许按层替换材质例如自定义抗锯齿方案。4.3 XChartsMgr全局图表注册表XChartsMgr.cs 是静态管理器维护ListBaseChart chartList、主题字典Dictionarystring, Theme themes并在启动时读取Resources/XCSettings重建主题列表XCThemeMgr.ReloadThemeList()。它提供AddChart/GetChart/RemoveChart/ContainsChart等按chartName注册与查找的接口并对重名图表抛出Debug.LogError与BaseChart.chartNamesetter 中的重名校验互相呼应。跨图表查找如跨图表联动更新依赖这一全局注册表。五、纯代码渲染与自定义绘制Custom DrawingREADME 的 Custom Drawing 特性提供的是绘图 API 回调钩子的组合。BaseChart.API.cs 暴露了五个绘制钩子回调时机onDraw绘制 Serie 前调用ActionVertexHelperonDrawBeforeSerie每个 Serie 绘制完前调用onDrawAfterSerie每个 Serie 绘制完后调用onDrawUpperTooltip 层绘制前调用onDrawTopTop 层绘制前调用配套的底层绘图工具是 UGL.csUGUI Graphics Library提供DrawLine直线、DrawArrow箭头、DrawCricle圆等静态方法全部直接写VertexHelper。仓库自带示例 Example12_CustomDrawing.cs 演示了完整的自定义绘制流程——在第 0 条 Serie 的第 4 个数据点处绘制一条贯穿 Grid 高度的蓝色参考线和一个圆点chart.onDrawAfterSerie delegate(VertexHelper vh, Serie serie) { if (serie.index ! 0) return; var dataPoints serie.context.dataPoints; // Serie 上下文中的屏幕坐标点 if (dataPoints.Count 0) { var pos dataPoints[3]; var grid chart.GetChartComponentGridCoord(); var zeroPos new Vector3(grid.context.x, grid.context.y); var startPos new Vector3(pos.x, zeroPos.y); var endPos new Vector3(pos.x, zeroPos.y grid.context.height); UGL.DrawLine(vh, startPos, endPos, chart.theme.serie.lineWidth, Color.blue); UGL.DrawCricle(vh, pos, 5, Color.blue); } };要点自定义绘制的输入是VertexHelperUGUI 顶点缓冲与serie.context.dataPoints数据点像素坐标你既可以叠加参考线/标注也能完全接管某一层的绘制。六、动态数据操作与交互 APIREADME FAQ 回答是否支持动态添加/修改数据支持但数据需由用户自行解析获取。BaseChart.API.cs 中的数据管理 API 完整覆盖增、改、清、缓存、联动刷新RefreshChart()整图下帧重绘、RefreshChart(int serieIndex)单 Serie 重绘清空ClearData()组件 Serie 数据、ClearSerieData()、ClearComponentData()、RemoveData()连 Serie 一并移除、RemoveAllSerie()缓存上限SetMaxCache(int maxCache)——当数据量超过该值时会自动删除第一个值再加入最新值是滚动曲线/实时监测场景的标配头部插入SetInsertDataToHead(bool)[Since(v3.11.0)]配合insertDataToHead控制新数据追加到序列哪一端主题UpdateTheme(ThemeType)切换内置主题、UpdateTheme(Theme)应用自定义主题动画AnimationEnable/AnimationFadeIn/AnimationFadeOut/AnimationPause/AnimationResume/AnimationResetTooltipTriggerTooltip(int dataIndex, int serieIndex)/TriggerTooltip(Vector3 localPosition)/CancelTooltip()[Since(v3.7.0)]可编程触发提示框事件onSerieClick/onSerieDown/onSerieEnter/onSerieExit[Since(v3.6.0)]、onLegendClick/onLegendEnter/onLegendExit、onAxisPointerValueChanged以及onInit/onUpdate/onDraw系列生命周期回调JSON 导入导出ExportToJson(bool prettyPrint)/ImportFromJson(string json)[Since(v3.16.0)]属于master开发线能力尚未进入 3.15.0 稳定版。仓库中的 Example01_RandomData.cs 是动态数据的权威参考实现它在chart.onInit回调中读取初始数据量随后支持按下Space追加一条随机数据AddXAxisData()AddData(...)、按U更新现有数据、按C调用chart.ClearData()清空同时暴露loopAdd/loopAddTime定时循环追加与maxCache自动淘汰最旧数据参数覆盖了实时曲线最常见的三种模式循环追加、定时更新、限量缓存。七、Getting Started导入与创建第一个图表7.1 获取与导入三种方式README Getting Started 第 1 步是 Import the XCharts unitypackage or source code into your Unity project。结合 教程文档共有三种导入路径源码直接拷贝下载源码后将 XCharts 目录拷入 Unity 项目的Assets目录编译后即可使用Import Package下载.unitypackage在 Unity 中Assets - Import Package选择导入Package ManagerUPMUnity 2018.3 可在 Package Manager 中 Add package from git URL或在Packages/manifest.json的dependencies中添加com.monitor1394.xcharts: https://github.com/XCharts-Team/XCharts.git包标识com.monitor1394.xcharts与 package.json 中name: com.monitor1394.xcharts一致说明本仓库目录本身即可作为 UPM 包直接消费。守护程序Daemon建议教程同时建议导入 XCharts-Daemon 守护程序——它是编辑器AssetPostprocessor在更新 XCharts 时根据本地 TextMeshPro/New Input System 的开关情况自动刷新 asmdef保证 CI/CD 等自动化流程编译正常。本仓库编辑器侧自带对应的资源守护逻辑 XChartsDaemon.cs当检测到XCSettings.asset被导入/变更时调用CheckAsmdef()并XCThemeMgr.ReloadThemeList()重载主题列表自定义主题资产则经XCSettings.AddCustomTheme(theme)注册。7.2 四步创建折线图README 给出的标准流程导入XChartsunitypackage 或源码在Hierarchy视图右键创建图表README 写作UI-XCharts-LineChart从源码看创建菜单实际注册为[AddComponentMenu(XCharts/LineChart, 13)]即Assets - Create - XCharts - LineChart两种入口创建的都是同一个 LineChart 组件在Inspector中调整组件参数Game视图查看实时效果更多细节参考 5 分钟教程。创建后的默认状态由 LineChart.DefaultChart() 决定自动挂上GridCoord、XAxis、YAxis添加一条默认 Serie 和 5 个类目x1~x5——因此新建图表立刻可见一条折线无需手工配轴。若要切换形态面积图、平滑曲线、堆叠、阶梯、虚线、时间轴、对数轴可调用LineChart上对应的Default*LineChart()方法或直接修改serie.lineType、serie.lineStyle.type、axis.type等属性。7.3 代码驱动的图表除 Inspector 外也可完全用代码构建图表。Example10_LineChart.cs、Example20_BarChart.cs、Example30_PieChart.cs、Example40_Radar.cs、Example90_Candlestick.cs 等示例展示了各图表类型通过BaseChart统一 APIAddData、AddXAxisData、GetChartComponentT()、GetSerie(i)驱动数据与组件的过程Example02_ChartEvent.cs 演示事件回调Example04_DataZoom.cs 演示数据区域缩放Example05_DynamicChart.cs 演示动态图表。Examples 程序集通过 XCharts.Examples.asmdef 显式引用XCharts.Runtime与运行时程序集边界清晰。八、Important Notes版本与兼容性必读README 的 Important Notes 有四点全部与升级决策直接相关这里结合仓库证据完整保留XCharts3.0与XCharts2.0不完全兼容。升级到 3.0 可能需要调整代码并重新配置部分图表XCharts2.0处于维护期只修复关键缺陷兼容下限为 Unity 5.6但官方提示由于测试范围有限可能存在兼容性问题README 原句While XCharts supports Unity 5.6 and above, compatibility issues may arise due to limited testing本仓库仅含 XCharts 源码。Demo 需另见 XCharts-Demo 仓库与在线示例扩展图表见独立包。分支模型Branch InformationREADME 明确了分支策略升级/跟版时应注意master开发分支。最新改动与新特性先提交到master一段时间后再 merge 进3.0分支并随 release 版本发布3.03.0 稳定分支一般每月更新一次合并master的最新改动并发布 release 版本2.0/2.0-upm2.0 稳定分支含 Demo / 仅 UPM 包不再维护只修严重缺陷1.0/1.0-upm1.0 稳定分支已停止维护。当前仓库 HEAD 位于master开发线changelog 中master章节紧随v3.15.02026-03-01 发布且BaseChart.API.cs已出现[Since(v3.16.0)]的 JSON 导入导出接口ExportToJson/ImportFromJson说明 3.16.0 正在master上开发、尚未进入稳定版。生产项目建议以3.0分支的 release 为准。v3.15.0 版本要点与 README 特性相互印证据 changelog 的 v3.15.0 摘要新增DataZoom.minZoomRatio替代旧minShowNum、Chart.useUtc与BaseChart.useUtc属性对应、Axis.mainAxis控制柱图朝向、Serie.ignoreZeroOccupy零值柱是否占位、Pie.pieType实心饼与线框 handle 图、Axis.onLabelClick、Animation.Exchange等并修复了SaveAsImage被其他组件遮挡、Pie点击无响应、TMP 兼容、甘特图 2038 年问题等。这些条目印证了 Key Features 中Animations and InteractionsHigh Customizability的持续演进。九、文档索引、FAQ 与许可9.1 文档索引DocumentationREADME 链接的文档在本仓库Documentation~目录内均可直接阅读文档仓库相对路径XCharts 教程5 分钟上手Documentation~/en/tutorial01.mdXCharts API 文档Documentation~/en/api.md配置项手册Documentation~/en/configuration.md常见问题 FAQDocumentation~/en/faq.md更新日志Documentation~/en/changelog.md订阅与支持Documentation~/en/support.mdDocumentation~/zh/下另有同构的中文版文档。9.2 FAQREADME 原文三问三答Is XCharts free to use?Yes, XCharts is free under the MIT license and includes value-added VIP services.MIT 免费开源另有增值 VIP 服务Does XCharts support dynamic data addition and modification?Yes, but data must be parsed or retrieved by the user.支持动态增改数据但数据来源需用户自行解析后调用接口写入Does this plugin work on platforms other than Unity?No, it is designed for Unity only.仅面向 Unity 平台9.3 许可与联系MIT LicenseXCharts 核心库基于 MIT 协议发布见 LICENSE.md允许免费使用与二次开发扩展图表与高级组件需订阅 VIP/SVIP 服务获得授权联系方式README 给出的官方支持邮箱为monitor1394gmail.com订阅与服务详情见 support 文档。十、结语如何从本仓库继续深入XCharts 的设计可以概括为一句话UGUI 之上的纯代码图表引擎组件化配置 回调式扩展。建议按以下路径继续深入读 tutorial01 完成首次实操对照 configuration 查组件参数对照 api 查代码接口通读 Runtime/InternalBaseChart 分层、Painter 渲染管线、XChartsMgr 全局注册理解架构精读 Examples 中Example00_CheatSheetAPI 速查表与Example01_RandomData动态数据关注 changelog 跟踪master与3.0稳定分支的版本节奏。在 Unity 5.6 环境中只要遵循稳定版选型 Inspector 可视化配置 API 动态数据的三条主线即可把 XCharts 平滑接入仪表盘、数据监测与运营报表类应用。赞分享数据可视化图表库UI组件【免费下载链接】XChartsA charting and data visualization library for Unity. Unity数据可视化图表插件。项目地址https://gitcode.com/gh_mirrors/xc/XCharts点击查看免费下载相关推荐Unity UGUI XCharts 快速入门教程5分钟掌握基础图表绘制Unity UGUI XCharts 快速入门教程5分钟掌握基础图表绘制 前言 在Unity游戏开发或数据可视化应用中图表组件是不可或缺的重要元素。XCha数据可视化图表库UI组件XCharts强大的Unity数据可视化图表插件XCharts强大的Unity数据可视化图表插件 项目介绍 XCharts 是一款面向 Unity 开发者的功能强大、简单易用的数据可视化图表插件。它基于 U数据可视化图表库UI组件Unity图表插件XCharts一站式数据可视化解决方案Unity图表插件XCharts一站式数据可视化解决方案 XCharts是一款专为Unity引擎打造的高性能数据可视化图表插件支持折线图、柱状图、饼图等12数据可视化图表库UI组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考