绘图(图表)组件的建议?
Posted
技术标签:
【中文标题】绘图(图表)组件的建议?【英文标题】:Recommendations for plotting (chart) component? 【发布时间】:2011-10-02 07:16:51 【问题描述】:我正在寻找一个小部件或控件来绘制时间序列数据。基本上 plot(x,y) 其中 x 和 y 是 Nx1 个向量。我正在寻找,但没有找到太多,任何建议都会很棒!谢谢。
【问题讨论】:
在 Windows 世界中,它被称为“控件”,而不是“小部件”。 C++Builder 附带的 TChart 有问题吗? TChart,开箱即用,配合 TFastLineSeries 即可完成工作 作为所有者 Gigasoft,请参阅我们的 7 meg charting demo 作为研究德尔福图表的一部分。 【参考方案1】:我更喜欢Jedi VCL library 中的 TJvChart,但后来我编写了 TJvChart,或者大部分内容。我推荐它的原因是它是免费的,但它有一些限制,包括缺乏适当的放大和缩小功能。
我不喜欢在我的应用程序中使用任何不包含源代码的组件,并且通常注意不要在任何严肃的项目中使用闭源组件,因此如果您需要使用,请计划购买 TeeChart 源代码组件。不过,我并不反对 Tee-Chart;如果您选择在商业项目中使用它,那么它也很棒。请注意,对于您真正想认真使用的任何东西,购买源代码确实是 100% 值得的。
快速入门: 1.下载并安装JVCL。 2. 打开包含的 JvChart 演示。
*** 风格教程: 1. 将 TJvChart 放到表单上。 2. 编写这段代码:
JvChart1.Options.PenCount := 1;
JvChart1.Data.ValueCount := 3;
// set values for [penIndex=0, valueIndex=0..2 ]
JvChart1.Data.Value[0, 1] := 1;
JvChart1.Data.Value[0, 2] := 3;
JvChart1.Data.Value[0, 3] := 5;
JvChart1.PlotGraph;
【讨论】:
TeeChart 自带源代码。你只需要为此付费。恕我直言,任何严肃的项目都应该使用支持良好的组件,无论是否商业(并且始终建议获取长期项目的源代码)。否则你的论点可以用来使用 FPC/Lazarus 而不是 Delphi,因为 Delphi 是一个封闭源代码的应用程序,没有完整的源代码。 哪个在大数据集上表现更好? @David,我必须说我没有使用 JvChart 的经验。正如您提到的,TeeChart 具有 TFastLineSeries。将 DrawAllPoints 设置为 False 会对绘制速度产生很大影响。也可以在 TeeChart 之外定义所有系列,从而减少大系列的内存占用。有关更多信息,请参阅 [www.teechart.net/reference/articles/index.php]。尽管我在一些需要更高可靠性的应用程序中使用自制组件,但标准库的性能很难被击败。 我说的是 ldsandon;我说如果你付费,它会附带源代码。谢谢你说了两次。 ;-) TJvChart 中会影响很多人的最大限制是无法进行基于鼠标的放大和缩小。在这种情况下,如果你需要它,你真的想要 TeeChart。【参考方案2】:使用 Delphi 提供的 TeeChart。适用于时间序列和实时图表。
【讨论】:
如果您想在屏幕上以抗锯齿方式绘制图表,您可以将其保存到 EMF 文件中,然后使用我们的Open Source GDI+ wrapper 进行渲染。我在几个项目中使用了它(通过我们的报告引擎),效果很好。使用 GDI+ 绘图的好旧 TChart 看起来好多了,至少对于最终客户而言。以上是关于绘图(图表)组件的建议?的主要内容,如果未能解决你的问题,请参考以下文章