6

我们正在为我们正在进行的一个新项目研究替代控制库。要求之一是以表面图的形式显示数据,如下面的 ComponentOne 图表所示。

替代文字

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

有一些麻烦找到任何,所以所有的帮助表示赞赏。

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

4

11 回答 11

7

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

  1. ChartFX for .NET -包含 3D 表面的可用图表库
  2. Nevron Chart for .NET -可用曲面图库
于 2009-06-18T13:59:19.087 回答
7

您可能已经遇到过这个问题,但我想我会指出 CodeProject 文章Plot 3Dsurfaces。我不确定它的功能集是否足以满足您的要求,但如果您还没有,那么值得研究一下。明显的优势是它是免费和开源的(因此您可以根据您的特定需求对其进行扩展)。

示例截图:

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

示例截图:


(来源:ffconsultancy.com

我建议了第一个(CodeProject)选项,以防万一满足您的要求,尽管很可能不是。F# 几乎肯定会足够好。请注意,F# 是一种函数式语言(因此通常用于数学和科学应用程序),它可能是与绘图相关的任何功能的绝佳选择 - 您甚至可能需要考虑编写程序的部分绘图语言,尤其是当它变得相对复杂时。

希望有帮助。

于 2009-06-19T10:25:22.770 回答
5

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

我们在 Uni 中被介绍到Octave,其中一个包允许我们对矩阵进行网格绘制。Octave 用于绘图的包是GNUPlot。我不知道您是否可以将其与 .NET 3.5 挂钩,所以它可能没有多大帮助,但看看它是可行的

八度网格图
(来源:network-theory.co.uk

于 2009-06-18T13:52:19.973 回答
4

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

希望这是有用的

于 2009-06-18T14:00:04.717 回答
3

我建议对 Nevron 保持谨慎。我拥有丰富的经验,因为在过去的 5 年里,我一直在将它们用于企业 BI 应用程序中的所有图表。

Nevron 有很多值得喜欢的地方:

  • 图表看起来很棒
  • API 很不错
  • 有很多图表类型
  • 价格合适(它们比许多竞争对手如 Dundas 便宜)
  • 技术支持还不错,一般可以直接给开发者发邮件,得到他们的好评。如果您准备好为要求提供一些输入,他们非常乐意为您添加新的图表类型。他们为我构建了一个很棒的维恩图组件:)

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

他们已经多次更改了他们的对象模型,并且在打破界面兼容性和改变你做事的方式方面有着良好的记录。每次我必须进行 Nevron 升级时,我都有一种恐惧感……

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

于 2009-07-24T09:34:19.983 回答
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

(我试图让它们成为正确的链接,但因为我是新人,所以不允许添加多个链接)

于 2009-06-25T01:48:53.887 回答
2

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

于 2009-07-22T07:33:32.650 回答
2

您可能需要考虑来自Software Siglo XXI的Super 2d/3d Graph Library(它是免版税且非常便宜的)。

示例代码:

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 产品页面

于 2011-06-20T19:38:11.437 回答
1

如果不至少提及ILNumerics ,这个列表怎么可能是完整的?

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

编辑:在 ILNumerics 中对曲面图进行非常简单的设置,如下所示:

在此处输入图像描述

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

于 2016-03-17T17:55:07.570 回答
-2

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

于 2009-06-16T10:17:49.490 回答
-2

您可能还想尝试:

于 2009-06-25T01:35:12.197 回答