我们正在为我们正在进行的一个新项目研究替代控制库。要求之一是以表面图的形式显示数据,如下面的 ComponentOne 图表所示。
我们过去使用过 C1 控件,但对它并不完全满意 - 所以想知道是否有人可以推荐一些替代品。
有一些麻烦找到任何,所以所有的帮助表示赞赏。
注意:这是一个 .NET 3.5 WinForms 应用程序
我们正在为我们正在进行的一个新项目研究替代控制库。要求之一是以表面图的形式显示数据,如下面的 ComponentOne 图表所示。
我们过去使用过 C1 控件,但对它并不完全满意 - 所以想知道是否有人可以推荐一些替代品。
有一些麻烦找到任何,所以所有的帮助表示赞赏。
注意:这是一个 .NET 3.5 WinForms 应用程序
以下是一些具有您正在寻找的图表类型的商业提供商:
您可能已经遇到过这个问题,但我想我会指出 CodeProject 文章Plot 3Dsurfaces。我不确定它的功能集是否足以满足您的要求,但如果您还没有,那么值得研究一下。明显的优势是它是免费和开源的(因此您可以根据您的特定需求对其进行扩展)。
示例截图:
另一个看起来相当完整的可能替代方案是F# for Visualization库。这是商业用途,但从外观上看,它的功能可能超出您的需要。不要让它为 F# 设计的事实让您失望 -您仍然应该直接从 C# 使用它(或者可能使用少量互操作以使事情更清洁)。当然,C# 提供的函数式编程支持应该使这项工作相对容易。
示例截图:
(来源:ffconsultancy.com)
我建议了第一个(CodeProject)选项,以防万一满足您的要求,尽管很可能不是。F# 几乎肯定会足够好。请注意,F# 是一种函数式语言(因此通常用于数学和科学应用程序),它可能是与绘图相关的任何功能的绝佳选择 - 您甚至可能需要考虑编写程序的部分绘图语言,尤其是当它变得相对复杂时。
希望有帮助。
这可能不关我的事,因为我从未使用过 C#/.NET 框架/等,但这看起来像是矩阵的网格图。
我们在 Uni 中被介绍到Octave,其中一个包允许我们对矩阵进行网格绘制。Octave 用于绘图的包是GNUPlot。我不知道您是否可以将其与 .NET 3.5 挂钩,所以它可能没有多大帮助,但看看它是可行的。
(来源:network-theory.co.uk)
取决于你想花多少钱,有很多选择,我们在 3D 图形方面做了各种各样的工作,并且在过去进行了广泛的探索下面我提供了一些链接来帮助你开始
来自 Gigasoft 的 3D 科学图表 - http://www.gigasoft.com
Gino Graphics 的 Ginosurf - http://www.gino-graphics.com/products/surf.htm
.Net 的 Matlab 构建器 - http://www.mathworks.com/products/netbuilder
Mercury Systems 的 Meshviz 和 OpenInventor - http://www.vsg3d.com/
总是有 Directx 及其对托管代码的端口
希望这是有用的
我建议对 Nevron 保持谨慎。我拥有丰富的经验,因为在过去的 5 年里,我一直在将它们用于企业 BI 应用程序中的所有图表。
Nevron 有很多值得喜欢的地方:
到目前为止一切都好吗?对我来说,杀手必须是新版本套件发布时所涉及的痛苦。我们将 Nevron 用于我们的图表,将 Infragistics 用于我们的 UI 组件。我一般可以在半天之内将我们的应用程序升级到 Infragistics 的新版本。新的 Nevron 升级可能需要长达 4 周的时间。
他们已经多次更改了他们的对象模型,并且在打破界面兼容性和改变你做事的方式方面有着良好的记录。每次我必须进行 Nevron 升级时,我都有一种恐惧感……
另一个警告词,他们对轴标签的处理还有很多不足之处。我花了很多时间试图让轴标签看起来不错。在过去的几个版本中,对此的支持有所改进,但还没有。
我们以前使用过 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
(我试图让它们成为正确的链接,但因为我是新人,所以不允许添加多个链接)
我建议使用http://www.obacs.com的 Scinet Chart 。与替代品相比,它有很多图表选项并且便宜得多。
您可能需要考虑来自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
如果不至少提及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() }
}
};
所有场景都由场景图中的简单对象组成。您可以修改和控制一切。这是专门用于科学数据的。尝试在线修改此示例:
过去我对Dundas Chart非常满意——你可以看看它是否适合你的需要。
您可能还想尝试: