我们正在研究我们正在开展的新项目的交替控制库。其中一个要求是按照下面的ComponentOne图表以曲面图的形式显示数据。
我们过去曾使用C1控件但对它并不完全满意 - 所以想知道是否有人可以推荐一些替代品。
找不到任何问题,所以所有帮助都很受欢迎。
注意:这是一个.NET 3.5 WinForms应用程序
答案 0 :(得分:7)
以下是一些具有您正在寻找的图表类型的商业提供商:
答案 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。
(来源:network-theory.co.uk)
答案 3 :(得分:4)
取决于你想花多少钱,有很多选择,我们在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及其端口始终存在托管代码
希望这很有用
答案 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的事情:
到目前为止一切都好吗?对于我来说,杀手锏必须是新版本套件发布时所涉及的痛苦。我们使用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
答案 8 :(得分:1)
如果不至少提及ILNumerics,此列表如何完整?
免责声明:我在ILNumerics团队工作时有偏见。但我们的Visualization Engine带来了当今最灵活,最快速的表面图。这就是我们客户所说的。您可以免费试用自己 - 甚至可以直接在我们的网站上试用。
编辑: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() }
}
};
所有场景都是由场景图中的简单对象组成的。您可以修改和控制一切。这是专门用于科学数据。在线尝试并修改此示例:
答案 9 :(得分:-2)
我过去对Dundas Chart非常满意 - 你可以看看这是否适合你的需要。
答案 10 :(得分:-2)
您可能还想尝试: