Delphi、C++ Builder & .NET sgcUI 的一部分

sgcCharts,适用于 Delphi、C++ Builder & .NET 的图表库

一套图表库,覆盖仪表盘、数据分析和交易界面。从折线到瀑布图共十七种系列类型,内置 SMA、RSI、MACD 和 Bollinger 指标、实时数据源、缩放与绘图工具,以及 PNG 或 SVG 导出。LiveLine 演示通过环形缓冲区流式处理 1,000,000 个点。

VCL、FireMonkey、WinForms、WPF、Avalonia一个模型,17 种系列类型LiveLine 演示:环形缓冲区中的 1,000,000 个点包含在 sgcUI Professional 中
sgcCharts 蜡烛图,带有 Bollinger 带、移动平均线、成交量、RSI 和绘图工具

图表库所需的一切

七个分组,十八项功能。每项功能都标明实际的组件或属性,并链接到对应的帮助主题。标有“注册版”的功能不包含在免费的 .NET 社区版中。

图表类型

一个模型,十七种系列类型,按数据需要配置任意数量的坐标轴。

由系列图库渲染的 sgcCharts 面积图

图表类型

一个图表模型上的十七种图表类型

销售界面需要柱状图和环形图,实验室界面需要散点图和热力图,交易界面需要蜡烛图。sgcCharts 用同一个模型全部覆盖:每个系列都是一个组件,可拖放到窗体上或通过代码创建,关联到 TsgcChart,并可与其他系列自由组合。API 只需学习一次,即可在每个界面中复用。

  • 折线、快速折线、阶梯线、面积、范围面积、柱状、散点、气泡图、蜡烛图和 OHLC,支持数值、日期时间、对数或分类坐标轴
  • 饼图与环形图、雷达图、热力图、矩形树图、漏斗图、箱线图和瀑布图,用于分类数据
  • TsgcChartSeries_Bar 绘制垂直或水平柱状图,可分组或堆叠(Grouping)
  • 全部十七种都包含在每个版本中,免费的 .NET 社区版也不例外
  • 支持阿拉伯语和希伯来语的从右到左:标题、图例、提示框、工具栏和范围选择器已镜像,MirrorPlot 还会镜像绘图区及其坐标轴
阅读帮助主题
sgcCharts 下钻矩形树图与销售漏斗图并排显示

图表类型

面向业务数据的环形图、矩形树图和漏斗图

管理报表需要展示占比、层级和转化阶段。饼图系列只需一个属性即可变为环形图,并把大量小扇区合并为一个“其他”扇区,保持图表清晰易读。矩形树图按数值确定嵌套矩形的大小并可点击下钻,漏斗图则展示销售或支持流程的每个阶段及其百分比。标签可放在扇区内部或外部,矩形树图可按分组或按数值通过色阶着色。每个系列都遵循图表主题,因此报表与应用程序的其余部分保持一致。

  • InnerRadiusPercent 生成环形图,OthersThreshold 和 OthersText 用于合并小扇区
  • ExplodeOnClick 在用户点击时将扇区拉出
  • TsgcChartSeries_Treemap,带 DrillOnClick、DrillUp 和 OnDrill 事件
  • TsgcChartSeries_Funnel,带 NeckWidthPercent 和 ProportionalHeight
阅读帮助主题

图表类型

气泡图、箱线图、瀑布图和范围面积

财务团队想看从预算到实际的利润桥,质量工程师想看每个班次周期时间的分布,产品经理想在一张图表上看到收入、利润率和人数。四种系列覆盖这些场景。气泡图在 X 和 Y 之外再增加一个大小。箱线图用四分位数、中位数和离群值概括一个样本。瀑布图由正负步骤累计出总数,途中可加入小计和合计。范围面积填充最低值与最高值之间的区带,适合预测区间或公差带。

  • TsgcChartSeries_Bubble,提供 AddBubble、MinBubbleSize、MaxBubbleSize 和 SizeMode,可按面积(cbsArea)或直径(cbsDiameter)确定大小
  • TsgcChartSeries_BoxPlot 绘制最小值、四分位数、中位数、最大值和可选的平均值;AddValues 按 Excel 的 QUARTILE.INC 方式从原始样本计算四分位数,并找出 Tukey 离群值
  • TsgcChartSeries_Waterfall,提供 AddStep、AddSubtotal、AddTotal 和 ShowConnectors
  • TsgcChartSeries_RangeArea,用 AddRange 设置下限和上限区带
  • 四种系列都包含在每个版本中,免费的社区版也不例外,可用于 VCL、FireMonkey、WinForms、WPF 和 Avalonia
阅读帮助主题

图表类型

平滑曲线与误差线

实验报告要显示每个测量值及其不确定度,仪表盘上的趋势用曲线比锯齿线更易读。在折线、面积或范围面积系列上设置 Smooth,即可绘制单调三次样条。曲线不会超出数据范围,因此不会出现数值中并不存在的峰或谷。误差线可为折线、面积、散点和柱状系列显示每个点的不确定度,来源可以是固定值、百分比、系列的标准差,或每个点各自的自定义值。

  • TsgcChartSeries_Line、TsgcChartSeries_Area 和 TsgcChartSeries_RangeArea 上的 Smooth
  • ErrorBars.Kind:cebFixed、cebPercent、cebStdDev,或配合 AddCustom 使用的 cebCustom
  • Direction:cedBoth、cedPlus 或 cedMinus,端帽大小由 CapWidth 设置
  • 数值轴会自动加宽,因此不会裁掉任何误差线
  • 包含在每个版本中,免费的社区版也不例外,可用于 VCL、FireMonkey、WinForms、WPF 和 Avalonia
阅读帮助主题
绘制在三个独立数值坐标轴上的三个系列

图表类型

一个图表上的多个坐标轴

温度与压力、收入与数量、价格与成交量:真实数据很少共用同一个刻度。按需添加任意数量的坐标轴,放在左侧、右侧、顶部或底部,并将每个系列绑定到各自的一对坐标轴。每个坐标轴可自行选择类型、范围和标签格式,因此日期时间底部坐标轴可以与数值左侧坐标轴和对数右侧坐标轴并存。每个系列指定其使用的坐标轴,所以两条折线可共用左侧坐标轴,而第三条使用右侧坐标轴。各坐标轴可独立缩放,ResetZoom 可恢复到完整范围。

  • TsgcChart 上的 Axes 集合,每个刻度对应一个 TsgcChartAxis
  • AxisType:catNumeric、catLogarithmic、catDateTime 或 catCategory
  • Position:capLeft、capRight、capTop 或 capBottom
  • 每个坐标轴都有 Minimum、Maximum、Automatic、LabelFormat 和 Inverted
阅读帮助主题

金融图表

每个版本都包含蜡烛图,另有金融功能包:指标、窗格、标记和绘图工具。

日期时间坐标轴上的 sgcCharts 蜡烛图

金融图表

始终清晰的蜡烛图与 OHLC 图

价格历史是任何交易界面的核心。蜡烛图和 OHLC 系列在日期时间坐标轴上,根据您自己的数据或数据集绘制开盘价、最高价、最低价和收盘价。当多年的数据柱进入狭窄的窗口时,落在同一像素列中的蜡烛会被合并为一根正确的蜡烛(首个开盘价、最高价、最低价、最后收盘价、成交量求和),因此图表不会出现误导性的尖峰。OHLC 系列以带开盘和收盘刻度的条形绘制相同的数据,适合较长的历史数据。两种系列都支持每个图表的缩放、平移和十字光标。

  • TsgcChartSeries_Candlestick 和 TsgcChartSeries_OHLC 共用一个 OHLC 缓冲区
  • TsgcChartDataSource_DataSet 映射 OpenField、HighField、LowField、CloseField 和 VolumeField
  • 由 sgcChartDecimateOHLC 按像素列合并蜡烛
  • 两种系列都包含在每个版本中,免费的 .NET 社区版也不例外
阅读帮助主题
无需自己编写数学公式的技术指标

金融图表 仅限注册版

无需自己编写数学公式的技术指标

分析师希望在价格图上看到移动平均线、Bollinger 带、RSI 和 MACD。每个指标都是一个系列:将其 Source 指向蜡烛图系列,蜡烛变化时它会自动重新计算。无需编写、测试公式,也无需与实时数据保持同步。RSI 和 Stochastic 等振荡指标会绘制超买和超卖参考线,每个指标系列都以自己的颜色显示在图例中。可以把它们放在价格窗格上,也可以为每个指标单独设置一个窗格。

  • 趋势:TsgcChartSeries_SMA、TsgcChartSeries_EMA、TsgcChartSeries_WMA、TsgcChartSeries_Bollinger
  • 振荡指标:TsgcChartSeries_RSI、TsgcChartSeries_MACD、TsgcChartSeries_Stochastic,带 GuideLines
  • 波动率与成交量:TsgcChartSeries_ATR、TsgcChartSeries_VWAP、TsgcChartSeries_Volume
  • 按需调用 Recalculate,通过 Values 读取计算结果

.NET 社区版包含蜡烛图和 OHLC 系列,但不包含指标系列。

阅读帮助主题
窗格、最新价标记以及买卖盘区间带

金融图表 仅限注册版

窗格、最新价标记以及买卖盘区间带

交易布局会把价格、成交量和振荡指标叠放在共用同一时间轴的独立窗格中,因此缩放价格窗格时,其下方的所有窗格同步缩放。价格轴上的标记一眼就能显示最新值,行情推送时,阴影区间带显示当前买卖价差。窗格高度以百分比表示,布局会随窗口缩放并在调整大小后保持不变。每个窗格还有 Visible 属性,因此界面可以仅在用户需要时才显示指标窗格。

  • TsgcChartPane 的 Panes 集合,带 HeightPercent;用户可拖动窗格之间的分隔条
  • 每个坐标轴通过其 Pane 属性分配到某个窗格
  • LastValueMarker,带 Color 和 Visible
  • BidAskBand,带 Bid、Ask、BidColor 和 AskColor
阅读帮助主题

金融图表 仅限注册版

面向分析师的绘图工具

交易者会直接在图表上标注支撑位、趋势通道和回撤位。选择一个工具,在绘图区拖动,图形即锚定到数据坐标,因此用户缩放或平移时它仍停留在正确的蜡烛上。图形是一个集合,您也可以通过代码填充、锁定以防编辑或删除。线条可以是实线、虚线或点线,并有各自的颜色和宽度。由于图形只是带有普通坐标的普通集合,您可以将其与用户工作区一起保存,并在下次启动时重新添加。

  • Interaction.DrawingTool:cdtTrendLine、cdtHorizontalLine、cdtVerticalLine、cdtRectangle、cdtFibonacci
  • Drawings 集合,带 X1、Y1、X2、Y2、Color、Dash 和 Locked
  • DeleteSelectedDrawing 删除用户选中的图形
  • 在 DrawingTools 演示中展示
阅读帮助主题

标注与编辑

在图表上解释数据,并让用户在运行时调整图表。

标注与编辑

标注与 ISA-101 界面

操作员界面需要把报警限显示为一条线,把正常运行范围显示为一个区带,并在批次开始的时刻加一条备注。标注按数据值定位,因此用户缩放、平移或有新点流入时,它们仍停在正确的位置。标注框可以指向固定的数据点,也可以跟随实时系列的最新点。针对控制室,ApplyISA101Theme 会把图表切换为 ISA-101 HMI 界面所用的灰色、低调风格。颜色只留给异常状态,因此优先级 1 到 4 的报警颜色在平静的界面上格外醒目。

  • TsgcChart 上的 Annotations 集合,每项对应一个 TsgcChartAnnotation
  • Kind:cakText、cakLine、cakHorizontalLine、cakVerticalLine、cakRectangle、cakHorizontalBand 或 cakCallout
  • AnchorSeries 和 AnchorPoint 把标注框绑定到数据点,AnchorPoint 默认值 -1 表示跟随最新点
  • 标注跟随主题和 Windows 高对比度,屏幕阅读器会朗读其文本
  • ApplyISA101Theme 保留优先级 1 到 4 的报警颜色

标注和 ISA-101 预设包含在每个版本中,免费的社区版也不例外,可用于 VCL、FireMonkey、WinForms、WPF 和 Avalonia。预设的说明见主题与调色板。

阅读帮助主题
图表设计器的数据页:图表类型、按列或按行取系列、前 N 项、饼图系列、数据标签、总计,以及每个度量值的组合系列

标注与编辑

让用户自己编辑图表

图表放进演示文稿之前,用户可能想把销售折线换成公司色,把坐标轴标题改得更清楚,并隐藏退货系列。有了运行时图表编辑器,用户可以自己完成,无需重新生成应用程序。一次调用即可打开对话框,用户可在其中编辑标题、图例、坐标轴以及每个系列:颜色、可见性、平滑,以及换成另一种兼容的系列类型。

对于通过 TsgcChartTableLink 绑定到表的图表,图表设计器会在同一个对话框中增加一个数据页:图表类型(簇状、堆积或百分比堆积柱形图、折线图、面积图、饼图、圆环图或组合图)、按列或按行取系列、前 N 项、饼图系列、带格式的数据标签、数据透视图的总计行和总计列,以及组合图中每个度量值的系列类型和坐标轴。它是 sgcPivotGrid 数据透视图的设计器,也适用于该链接所绘制的任何表。 仅限注册版

  • VCL、FireMonkey、WinForms 和 WPF 上的 ShowEditor
  • Avalonia 上的 ShowEditorAsync
  • 标题、图例和坐标轴集中在一个对话框中
  • 每个系列:颜色、可见性、Smooth,以及在兼容类型范围内更改系列类型
  • Delphi 中的 sgcVCLShowChartDesigner 和 sgcFMXShowChartDesigner,.NET 中的 ShowDesigner 和 ShowDesignerAsync,以及 Delphi IDE 中的 Chart designer... 动词

运行时图表编辑器包含在每个版本中,免费的社区版也不例外。图表设计器以及表链接的百分比堆积柱形图、饼图、圆环图和组合图类型不包含在社区版中;柱形、堆积柱形、折线和面积图的表链接则包含在内。

阅读帮助主题 阅读图表设计器主题

实时数据与探索

流式处理大型数据集,让用户看得更仔细。

实时数据与探索

百万个点,毫无卡顿

传感器日志、音频电平和逐笔行情数据会不断增长。快速折线系列将点保存在固定 Capacity 的环形缓冲区中,因此内存保持平稳,最旧的点会被滚动淘汰。绘制时,每个系列会把可见点缩减为每个像素列约一组,无论数据到达多快,图表每秒最多重绘 MaxFPS 次。LiveLine 演示从后台线程向 1,000,000 个点的缓冲区流式写入数据。该演示可在运行时切换数据速率和可见窗口,让您在编写任何代码之前,就能在自己的硬件上评估其表现。

  • TsgcChartSeries_FastLine,带 Capacity 和 BufferMode(cbmOverwrite 或 cbmGrow)
  • Decimation:dmNone、dmMinMax(视觉上精确)或 dmLTTB
  • TimeWindow 仅显示流式坐标轴上最近 N 秒的数据
  • AddXY 和 AddY 在数据到达时追加点
阅读帮助主题

实时数据与探索

内置缩放、平移、十字光标和工具提示

用户希望仔细查看数据中有趣的部分。每个图表都已支持滚轮缩放、鼠标框选缩放、平移和触摸手势,十字光标和工具提示会吸附到最近的点。在流式图表上,缩放会暂停自动滚动,并在您选定的延迟后自动恢复。每个选项都是一个属性,因此展示终端屏幕可以关闭交互,分析师界面则可以把缩放限制在时间轴上。相同的行为适用于 VCL、FireMonkey 和 .NET 视图。

  • TsgcChartInteraction:WheelZoom、BoxZoom、Pan、ZoomMode(czmX、czmY、czmXY)
  • Crosshair、Tooltip 和 SnapToPoint
  • 用于实时图表的 AutoScrollResumeDelay 和 Paused
  • OnZoom、OnCrosshairMove 和 OnSeriesClick 事件,ResetZoom 用于返回
阅读帮助主题

数据输入,图像输出

绑定现有数据,接入实时数据流,并在任何地方渲染图表。

sgcCharts DataSetChart 演示,左侧为 DB 表格,右侧为图表

数据输入,图像输出

绑定 CSV、JSON 或任意 TDataSet

大多数图表展示的是您已有的数据:查询结果、导出的文件、REST 响应或表格的行。数据源可将它们载入系列,无需循环调用 AddXY。指定字段或列,数据变化后调用 Refresh,图表即随之更新。数据集数据源还可为蜡烛图映射开盘、最高、最低、收盘和成交量字段。数据源是组件,因此可以在设计时通过对象检查器进行设置。设置 Live 后,图表无需任何代码即可跟随数据集:用户在表格中保存、删除或插入记录,或更改过滤条件时,图表会重新加载。

  • TsgcChartDataSource_DataSet 通过 XField、YField 和 LabelField 读取任意 TDataSet
  • Live 通过 TDataLink 跟随保存、删除、插入和过滤的变化,并做了节流,一连串变化只触发一次重新加载;在 .NET 中,Live 跟随 DataTable 的变化
  • FollowCursor 在用户滚动数据集时移动当前聚焦的点(Delphi)
  • ExtraFields 为气泡图、范围面积、箱线图和瀑布图系列提供大小、最低值、四分位数或类型列
  • TsgcChartDataSource_CSV 和 TsgcChartDataSource_JSON 用于文件和 API 响应
  • TsgcChartDataSource_Table 用于内存表,例如 sgcGrid 的行
  • TsgcChartDataSource_Manual 用于从代码或后台线程推送点
阅读帮助主题

数据输入,图像输出 仅限注册版

无需胶水代码的实时行情与 IoT 数据源

将图表连接到消息代理或行情流,每条消息到达时即被绘制。sgcChartsWS 桥接挂接 sgcWebSockets 客户端的消息事件,并将 JSON 映射为点或蜡烛。Binance 数据源可通过聚合器,以一秒到一个月的周期,由原始成交数据生成蜡烛。数据源停止时,会恢复客户端原有的事件处理程序。

  • TsgcChartDataSource_Binance:Symbol、Stream(cbsKLine、cbsTicker、cbsTrade)、Interval
  • TsgcChartDataSource_MQTT,带 TopicFilter 和 PayloadFormat
  • TsgcChartDataSource_WebSocket 和 TsgcChartDataSource_SSE 用于基于 WebSocket 或服务器发送事件的 JSON
  • TsgcChartAggregator 通过 AddTrade 将成交数据转换为蜡烛

该桥接需要 sgcWebSockets。在社区版中,请使用手动数据源,通过自己的代码向图表提供数据。

阅读帮助主题

数据输入,图像输出

在服务器上输出 PNG 和 SVG,无需窗口

图表经常需要离开屏幕:每日报表邮件、PDF、网页或返回图像的 REST 端点。TsgcChartRenderer 无需窗体和消息循环,即可将同一个图表模型绘制为 PNG 或 SVG,适用于控制台应用程序、Windows 服务,或使用 Delphi 10.2 及更高版本构建的 Linux64 服务器。在屏幕上,视图只需一次调用即可保存用户所见内容。输出使用与屏幕相同的主题、字体和调色板,因此 PDF 中的图表与仪表盘上的完全一致。

  • RenderToPNGFile、RenderToPNGStream、RenderToSVGFile、RenderToSVGStream
  • Width、Height 和 Scale 用于高 DPI 图像
  • TsgcVCLChart 上的 SaveToPNG 和 SaveToSVG
  • Headless 和 HeadlessService 演示;在 .NET 中为 esegece.sgcCharts.Rendering 包
阅读帮助主题

无障碍

面向屏幕阅读器的 UI Automation、键盘和高对比度,无需任何设置。

无障碍

逐个数据点向 UI Automation 公开的图表

sgcCharts 将图表连同其标题、坐标轴、图例、系列和数据点向 Microsoft UI Automation 公开。每个数据点公开其类别和值,图表还会用写入无障碍 PDF 的同一段替代文本来描述自己。

  • Left 和 Right 移到上一个或下一个数据点,Up 和 Down 移到上一个或下一个系列,Home 和 End 移到第一个或最后一个数据点
  • Page Up 和 Page Down 按数据点总数的十分之一跳转,Enter 像单击一样激活焦点数据点,Esc 清除数据点焦点
  • 图表是 Tab 停靠点,并显示可见的焦点环
  • 在 Windows 高对比度主题下,系列使用系统颜色,并且在系列类型允许时用线型和标记加以区分

无障碍功能在每个版本中默认开启,包括免费的社区版,可用于 VCL(Delphi 和 C++Builder 从 Delphi 7 到 Delphi 13 的每个版本)、Windows 上的 FireMonkey,以及 WinForms、WPF 和 Avalonia。在 Delphi 和 C++Builder 中,AccessibleName 和 AccessibleDescription 设置向 UI Automation 公开的名称和说明,在 .NET 中,各框架标准的无障碍名称和帮助文本起同样的作用。请参见无障碍符合性报告。鼠标缩放和平移以及金融绘图工具没有键盘替代方式。

阅读帮助主题

查看 sgcCharts 的实际效果

sgcUI 套件演示中的 sgcCharts:使用内置模拟数据、可离线运行的完整应用程序。

在演示和帮助中实测

数据来自随产品发布的 LiveLine 演示和抽稀参考,您可以自行复现。

测量项结果条件
LiveLine 环形缓冲区中的点数1,000,000TsgcChartSeries_FastLine 通过 TsgcChartDataSource_Manual 由后台线程提供数据
每个像素列保留的点数最多 4 个dmMinMax 抽稀:首点、最小值、最大值和末点

来源:记录这些数据的帮助主题。

谁在用 sgcCharts 构建应用

交易与加密货币平台

交易台应用程序显示所选品种的蜡烛图,价格窗格上有移动平均线和 Bollinger 带,下方窗格有 RSI 和成交量,行情推送时还显示买卖盘区间带。分析师绘制的趋势线和斐波那契位在缩放时保持锚定。Binance 数据源直接由交易所的数据流生成蜡烛。

  • 蜡烛图系列
  • 指标与窗格
  • 绘图工具
  • Binance 数据源
运行 BinanceLive 演示

工业与 IoT 监控

控制室客户端同时绘制数十个传感器的数据。带环形缓冲区的快速折线系列以固定内存保存数小时的读数,时间窗口显示最近几分钟,抽稀则让重绘保持轻量。MQTT 主题直接为图表提供数据,热力图显示哪些机器温度偏高。

  • 快速折线与环形缓冲区
  • 时间窗口
  • MQTT 数据源
  • 热力图
运行 MQTTSensors 演示

业务报表与生成图像

后台服务将每周收入环形图、销售漏斗和十二个月趋势渲染为 PNG,用于管理层邮件,并渲染为 SVG,用于内部网。同样的图表代码也在桌面应用程序中运行,绑定同一个数据集,因此数字和颜色始终一致。

  • 环形图与漏斗图
  • DataSet 数据源
  • TsgcChartRenderer
  • 主题
运行 Headless 演示

几行代码绘制环形图

Delphi、C++ Builder 和 C# 中使用相同的 API:按地区显示收入的环形图,带“其他”扇区,采用深色主题并导出为 PNG。

构建模型、一个中心孔占 55% 的饼图系列、一个 VCL 视图,以及一个写出 1200 x 700 PNG 的渲染器。

uses
  Controls, sgcUICore_Theme, sgcCharts_Chart, sgcCharts_Series_Pie,
  sgcCharts_Renderer, sgcCharts_VCL;

// Revenue by region as a donut chart with an "Others" slice,
// on a dark theme, exported to PNG.
procedure BuildDonut(aOwner: TWinControl);
var
  oChart: TsgcChart;
  oView: TsgcVCLChart;
  oPie: TsgcChartSeries_Pie;
  oPNG: TsgcChartRenderer;
begin
  oChart := TsgcChart.Create(aOwner);
  oChart.Theme := utDark;
  oChart.Title.Text := 'Revenue by region';
  oChart.Legend.Position := clpRight;

  oPie := TsgcChartSeries_Pie.Create(aOwner);
  oPie.Chart := oChart;
  oPie.InnerRadiusPercent := 55;
  oPie.OthersThreshold := 4;
  oPie.OthersText := 'Others';
  oPie.ExplodeOnClick := True;
  oPie.AddItem('North America', 420);
  oPie.AddItem('Europe', 310);
  oPie.AddItem('Asia Pacific', 280);
  oPie.AddItem('Latin America', 95);
  oPie.AddItem('Middle East', 12);

  oView := TsgcVCLChart.Create(aOwner);
  oView.Parent := aOwner;
  oView.Align := alClient;
  oView.Chart := oChart;

  oPNG := TsgcChartRenderer.Create(aOwner);
  oPNG.Chart := oChart;
  oPNG.RenderToPNGFile('revenue.png', 1200, 700);
end;

阅读帮助主题 →

C++ Builder 中的同一个环形图,使用生成的 sgcCharts_*.hpp 头文件。

#include <vcl.h>
#include "sgcUICore_Theme.hpp"
#include "sgcCharts_Chart.hpp"
#include "sgcCharts_Series_Pie.hpp"
#include "sgcCharts_Renderer.hpp"
#include "sgcCharts_VCL.hpp"

// Revenue by region as a donut chart with an "Others" slice,
// on a dark theme, exported to PNG.
void BuildDonut(TWinControl *aOwner)
{
  TsgcChart *oChart = new TsgcChart(aOwner);
  oChart->Theme = utDark;
  oChart->Title->Text = "Revenue by region";
  oChart->Legend->Position = clpRight;

  TsgcChartSeries_Pie *oPie = new TsgcChartSeries_Pie(aOwner);
  oPie->Chart = oChart;
  oPie->InnerRadiusPercent = 55;
  oPie->OthersThreshold = 4;
  oPie->OthersText = "Others";
  oPie->ExplodeOnClick = true;
  oPie->AddItem("North America", 420, 0);
  oPie->AddItem("Europe", 310, 0);
  oPie->AddItem("Asia Pacific", 280, 0);
  oPie->AddItem("Latin America", 95, 0);
  oPie->AddItem("Middle East", 12, 0);

  TsgcVCLChart *oView = new TsgcVCLChart(aOwner);
  oView->Parent = aOwner;
  oView->Align = alClient;
  oView->Chart = oChart;

  TsgcChartRenderer *oPNG = new TsgcChartRenderer(aOwner);
  oPNG->Chart = oChart;
  oPNG->RenderToPNGFile("revenue.png", 1200, 700);
}

阅读帮助主题 →

C# 中的无界面渲染:使用 Rendering 包,无需窗口,将同一模型渲染为 PNG。

using esegece.sgcCharts;
using esegece.sgcUICore;

// Revenue by region as a donut chart with an "Others" slice,
// on a dark theme, rendered headless to PNG (no window needed).
public static class RevenueDonut
{
    public static void Render()
    {
        var oChart = new TsgcChart();
        oChart.Theme = TsgcUITheme.utDark;
        oChart.Title.Text = "Revenue by region";
        oChart.Legend.Position = TsgcChartLegendPosition.clpRight;

        var oPie = new TsgcChartSeries_Pie();
        oPie.Chart = oChart;
        oPie.InnerRadiusPercent = 55;
        oPie.OthersThreshold = 4;
        oPie.OthersText = "Others";
        oPie.ExplodeOnClick = true;
        oPie.AddItem("North America", 420);
        oPie.AddItem("Europe", 310);
        oPie.AddItem("Asia Pacific", 280);
        oPie.AddItem("Latin America", 95);
        oPie.AddItem("Middle East", 12);

        var oPNG = new TsgcChartRenderer();
        oPNG.Chart = oChart;
        oPNG.RenderToPNGFile("revenue.png", 1200, 700);
    }
}
dotnet add package esegece.sgcCharts.Rendering

阅读帮助主题 →

运行 sgcCharts 演示

Delphi 19 个演示,C++ Builder 同样 19 个,.NET 12 个,全部包含在预编译演示下载中。以下是展示上述功能的演示。

LiveLine

LiveLine

快速折线系列,带 1,000,000 点的环形缓冲区并由后台线程提供数据,可选 10 秒、60 秒或整个缓冲区的时间窗口,支持主题切换,十字光标覆盖整个数据流。

Candlestick

日期时间坐标轴上的日蜡烛图,带成交量坐标轴。可用鼠标缩放和平移;当多根蜡烛共用一个像素列时,它们会合并为一根正确的蜡烛。

仅限注册版 DrawingTools

在蜡烛图上用鼠标绘制趋势线、水平线和垂直线、矩形以及斐波那契回撤,然后可选中、锁定或删除。

DataSetChart

DataSetChart

一个 1,000 行的客户端数据集显示在 DB 表格中,并由两个数据集数据源读取为折线系列和柱状系列。编辑一行并重新加载,图表随之更新。

BusinessCharts

BusinessCharts

气泡、箱线图、瀑布图和平滑范围面积系列,配有误差线、注释和 ISA-101 报警线,以及 ISA-101 主题和运行时图表编辑器,图表跟随实时数据集更新。.NET 版本为 BusinessCharts、BusinessChartsWpf 和 BusinessChartsAvalonia。FireMonkey 版本为 BusinessChartsFMX。

仅限注册版 BinanceLive

通过 sgcChartsWS 桥接,将 Binance 行情流的实时蜡烛显示在带窗格和指标的金融图表上。需要 sgcWebSockets。

仅限注册版 MQTTSensors

通过 sgcChartsWS 桥接,由 MQTT 主题提供的传感器读数在到达时即被绘制。需要 sgcWebSockets 和 MQTT 代理。

Headless

一个控制台程序,构建图表并在无窗口的情况下写出 PNG 和 SVG 文件。HeadlessService 则通过 Windows 服务完成同样的工作。

预编译演示

每款 sgcUI 产品的可直接运行的可执行文件,无需安装。

下载 sgcUI_bin.zip →

sgcCharts 包含在哪些版本中

sgcCharts 包含在 sgcUI Professional 和 Enterprise 中,也可单独购买。sgcCharts 还包含在 All-Access 套餐中。

sgcCharts 单品包

€199 / 开发者,含完整源代码,1 年更新。

购买 sgcCharts → 查看价格 →

sgcUI Professional

Standard 加 sgcCharts、sgcDashboard和sgcGauges,起价 €529。

查看 Professional →

sgcUI Enterprise

全部 15 款 sgcUI 产品,起价 €699。

查看 Enterprise →

免费的社区版(NuGet 上的 esegece.sgcCharts.Community)包含全部十七种系列、标注、误差线、ISA-101 预设、运行时编辑器、视图、缓冲区、手动、CSV、JSON 和数据集数据源、交互以及无界面输出。它不包含金融功能包(指标和成交量系列、窗格、聚合器、绘图工具、最新价标记、买卖盘区间带)、包含高级表链接类型的图表设计器,以及 sgcChartsWS 桥接。

功能社区版(免费)注册版
17 种系列类型,含蜡烛图和 OHLC✓✓
快速折线、环形缓冲区和抽稀✓✓
缩放、平移、十字光标和工具提示✓✓
手动、CSV、JSON 和实时数据集数据源✓✓
主题、PNG 和 SVG 导出、无界面渲染器✓✓
标注、误差线、ISA-101 预设和运行时图表编辑器✓✓
指标和成交量系列−✓
窗格、最新价标记、买卖盘区间带−✓
绘图工具和成交聚合器−✓
sgcChartsWS 实时数据源(Binance、MQTT、WebSocket、SSE)−✓
用于表链接的图表设计器,含百分比堆积柱形图、饼图、圆环图和组合图类型−✓

支持的框架与平台

sgcCharts 中的组件

组件说明
TsgcChart图表模型:坐标轴、系列、图例、主题和交互。
TsgcVCLChart、TsgcFMXChart适用于 VCL 和 FireMonkey 的视图。
TsgcChartRenderer无界面 PNG 和 SVG 渲染,在服务和 Linux64 上同样可用。
TsgcChartSeries_*17 种系列类型和金融指标系列。
TsgcChartDataSource_Manual、_CSV、_JSON、_DataSet、_Table用于点、文件、数据集和表的数据源。
TsgcChartDataSource_WebSocket、_MQTT、_SSE、_BinancesgcChartsWS 桥接的实时数据源(仅注册版)。
目标组件平台
Delphi 7 到 13,VCLTsgcVCLChartWin32 与 Win64
Delphi XE6 到 13,FireMonkeyTsgcFMXChartWindows、macOS、iOS 和 Android
C++ Builder 2007 到 13TsgcVCLChart、TsgcFMXChart生成的 .hpp 头文件和静态库
Delphi 10.2 到 13,无界面模型和 TsgcChartRendererLinux64,服务器上的 PNG 和 SVG
.NET Framework 4.7.2、.NET 8、9 和 10TsgcWinFormsChart、TsgcWpfChart、TsgcAvaloniaChartWinForms、WPF、Avalonia 12 和无界面渲染

常见问题解答

LiveLine 演示从后台线程向带 1,000,000 点环形缓冲区的快速折线系列流式写入数据。由于缓冲区具有固定的 Capacity,内存保持不变;抽稀把可见点缩减为每个像素列几个点,MaxFPS 则限制重绘速率。运行预编译演示,即可在您自己的机器上看到效果。

十七种:折线、快速折线、阶梯线、面积、范围面积、柱状、散点、气泡图、蜡烛图、OHLC、饼图与环形图、雷达图、热力图、矩形树图、漏斗图、箱线图和瀑布图。每种都是一个组件,因此可以在同一个图表上组合多种,并按需使用任意数量的坐标轴。

不包含。社区版包含蜡烛图和 OHLC 系列,但不包含指标和成交量系列、窗格、聚合器、绘图工具、最新价标记或买卖盘区间带。这些功能以及 sgcChartsWS 实时数据源需要注册版。请参阅帮助中的版本。

可以。SaveToPNG 和 SaveToSVG 保存视图所显示的内容,TsgcChartRenderer 则可按您选择的宽度、高度和缩放比例,在无窗口的情况下将图表模型渲染为 PNG 或 SVG 文件或流。这是生成 PDF 或邮件正文的常用途径。

可以,以无界面方式运行。自 Delphi 10.2 起,图表模型和 TsgcChartRenderer 可为 Linux64 编译并写出 PNG 和 SVG。没有 Linux 视图控件。在 .NET 中,esegece.sgcCharts.Rendering 包面向 .NET Standard 2.0、.NET Framework 4.7.2 以及 .NET 6、8、9 和 10。

每个产品授权都包含手动点、CSV、JSON、任意 TDataSet 和内存表。使用注册版和 sgcWebSockets 时,sgcChartsWS 桥接还增加了 Binance 行情流、MQTT 主题、基于 WebSocket 的 JSON 以及服务器发送事件。

sgcCharts 帮助

3,000+开发者
20+年
761+组件
30+API 集成
5平台
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

立即试用 sgcCharts

sgcUI 试用版包含 sgcCharts 和所有其他 sgcUI 产品。