ComponentOne 3D Surface Map Chart的替代品

时间:2009-06-16 10:13:08

标签: .net winforms controls charts componentone

我们正在研究我们正在开展的新项目的交替控制库。其中一个要求是按照下面的ComponentOne图表以曲面图的形式显示数据。

alt text

我们过去曾使用C1控件但对它并不完全满意 - 所以想知道是否有人可以推荐一些替代品。

找不到任何问题,所以所有帮助都很受欢迎。

注意:这是一个.NET 3.5 WinForms应用程序

11 个答案:

答案 0 :(得分:7)

以下是一些具有您正在寻找的图表类型的商业提供商:

  1. ChartFX for .NET - 包含3D表面的available charts图库
  2. Nevron Chart for .NET - available surface charts
  3. 的图库

答案 1 :(得分:7)

您可能已经遇到过此问题,但我想我会指出CodeProject文章Plot 3D surfaces。我不确定它的功能集是否足以满足您的要求,但如果您还没有,那么值得调查一下。显而易见的优点是它是免费和开源的(因此您可以根据您的特定需求进行扩展)。

屏幕截图示例:

看起来相当完整的另一种可能的替代方案是F# for Visualization库。这是商业化的,但从它的外观来看,你可能会需要更多更多。不要让它为F#设计的事实让你失望 - 你仍然应该直接从C#使用它(或者可能只需要少量的互操作来使事情更清洁)。当然,C#提供的函数式编程支持应该可以使工作变得相对容易。

屏幕截图示例:


(来源:ffconsultancy.com

我已经建议第一个(CodeProject)选项,以防万一符合您的要求,但可能不是。 F#one几乎肯定会足够好。请注意,F#是一种函数式语言(因此通常用于数学和科学应用程序),对于任何与图形绘制相关的功能而言,它很可能是一个很好的选择 - 你甚至可以考虑编写绘制的程序部分。语言,特别是如果它变得相对复杂。

希望有所帮助。

答案 2 :(得分:5)

这可能不是我的事,因为我从未使用过C#/ .NET框架/等,但这看起来像是矩阵的网格图。

我们在Uni中介绍了Octave,其中一个软件包允许我们绘制网格图矩阵。 Octave用于绘图的包是GNUPlot。我不知道你是否可以将它与.NET 3.5挂钩,所以它可能没有多大帮助,但它的工作是having a look

octave mesh plot
(来源:network-theory.co.uk

答案 3 :(得分:4)

取决于你想花多少钱,有很多选择,我们在3D图形方面做了各种各样的工作,并在过去广泛探索过它 下面我提供了一些帮助您入门的链接

希望这很有用

答案 4 :(得分:2)

我们之前使用过Nevron来获取其他WinForms图表并且它们非常棒 - 产品运行良好且技术支持非常有用。

他们似乎做表面图表(至少我理解它们): www.nevron.com/Gallery.ChartFor.NET.ChartTypes.GridSurfaceChartGallery.aspx www.nevron.com/Gallery.ChartFor.NET.ChartTypes.MeshSurfaceChartGallery.aspx www.nevron.com/Gallery.ChartFor.NET.ChartTypes.TriangulatedSurface.aspx

(我试图让它们成为正确的链接,但因为我是新的,我不允许放入多个链接)

答案 5 :(得分:2)

我建议使用http://www.obacs.com的Scinet Chart。它有很多图表选项,与替代品相比便宜得多。

答案 6 :(得分:2)

我建议对Nevron保持警惕。我有丰富的经验,因为我过去5年一直在企业BI应用程序中使用它们。

有很多关于Nevron的事情:

  • 图表看起来很棒
  • API非常好
  • 有很多图表类型
  • 价格合适(比Dundas等竞争对手便宜)
  • 技术支持非常好,您通常可以直接向开发人员发送邮件并从中获得良好的响应。如果您准备好为要求提供一些输入,他们非常乐意为您添加新的图表类型。他们为我建造了一个伟大的维恩图组件:)

到目前为止一切都好吗?对于我来说,杀手锏必须是新版本套件发布时所涉及的痛苦。我们使用Nevron作为我们的UI组件的图表和Infragistics。我通常可以在半天内将我们的应用程序升级到新版本的Infragistics。新的Nevron升级可能需要长达4周的时间。

他们多次更改了对象模型,并且具有破坏界面兼容性和改变执行方式的记录。每次我必须进行Nevron升级时,我都有一种恐惧感...

另一个警告,他们对轴标签的处理还有很多不足之处。我花了很多时间试图让轴标签看起来不错。在过去的几个版本中,对此的支持有所改善,但现在还没有。

答案 7 :(得分:2)

您可能需要考虑来自Software Siglo XXI超级2d / 3d图形库(它是免版税且非常便宜)。

示例代码:

Imports Super2d3dGraphLibrary
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim sf As New SeriesFactory
  Dim x, y, z As Integer
  For x = 0 To 100 Step 5
    For z = 0 To 100 Step 5
      y = 30 - Math.Sqrt((x - 50) * (x - 50) + (z - 50) * (z - 50)) + Rnd() * 5
      If y < 0 Then
        y = 0
      End If
      sf.AddPoint(x, y, z)
    Next
  Next
  sf.GenerateMesh()
  With Super2d3dGraph1
    .LicenseeIdentifier = "PROF"
    .Title = "Surface chart from random X/Y/Z points"
    .Style = Super2d3dGraphLibrary.STYLE2D3D.STYLE3D_XYZ_SURFACE_TRIANGLE
    .BackStyle = STYLEBACKGROUND.STYLEBACKGROUND_GRADIENT
    .ShowXAxis = True
    .XAxisTitle = "X-Axis"
    .XAxisScaleMaximum = 100
    .XAxisScaleMinimum = 0
    .XAxisScaleMode = SCALEMODE.SCALEMODE_FIXED
    .XAxisNumericFormat = "0"
    .ShowDividersX = True
    .ShowYAxis = True
    .YAxisTitle = "Y-Axis"
    .YAxisNumericFormat = "0"
    .ShowZAxis = True
    .ZAxisTitle = "Z-Axis"
    .ZAxisScaleMaximum = 100
    .ZAxisScaleMinimum = 0
    .ZAxisScaleMode = SCALEMODE.SCALEMODE_FIXED
    .ZAxisNumericFormat = "0"
    .ShowDividersZ = True
    .ShowLegend = False
    .ShowValues = False
    .ShowDataTable = False
    .SurfaceBrushStyle = New SolidBrush(Color.LightGreen)
    .SurfaceBrushMinBrightness = 30
    .SeriesLineStyle = New Pen() {New Pen(Color.Black)}
    sf.ApplyTo(Super2d3dGraph1)
  End With
End Sub
End Class

这是链接: Super 2d/3d Graph Library product page

答案 8 :(得分:1)

如果不至少提及ILNumerics,此列表如何完整?

免责声明:我在ILNumerics团队工作时有偏见。但我们的Visualization Engine带来了当今最灵活,最快速的表面图。这就是我们客户所说的。您可以免费试用自己 - 甚至可以直接在我们的网站上试用。

编辑:ILNumerics中表面图的一个非常简单的设置将实现如下:

enter image description here

var scene = new ILScene() {
  new ILPlotCube(twoDMode: false) {
    // we could define concrete data as matrix here. But for now
    // we go with an analytic expression instead: 
    new ILSurface(
      (x, y) => (float)(Math.Sin(x) * Math.Cos(y) 
                * Math.Exp(-(x * x + y * y) / 46)),
       colormap: Colormaps.Flag) // { new ILColorbar() }
  }
};

所有场景都是由场景图中的简单对象组成的。您可以修改和控制一切。这是专门用于科学数据。在线尝试并修改此示例:

http://ilnumerics.net/ilcc.php?ilc=ia13490

答案 9 :(得分:-2)

我过去对Dundas Chart非常满意 - 你可以看看这是否适合你的需要。

答案 10 :(得分:-2)

您可能还想尝试: