2009-06-16 7 views
6

Wir untersuchen Alternativen Bibliotheken für ein neues Projekt, an dem wir gerade arbeiten. Eine der Anforderungen besteht darin, Daten in Form einer Oberflächenkarte anzuzeigen, wie in der folgenden ComponentOne-Tabelle dargestellt.Alternative zu ComponentOne 3D Surface Map Diagramm

alt text

Wir haben die C1 Kontrolle in der Vergangenheit verwendet, sind aber nicht ganz zufrieden mit ihm - so fragte sich, ob jemand ein paar Alternativen recommoned kann.

Haben einige Schwierigkeiten, irgendwelche zu finden, also alle helfen geschätzt.

NB: Dies ist eine .NET 3.5 WinForms Anwendung

Antwort

-2

ich mit Dundas Chart in der Vergangenheit sehr glücklich gewesen -Sie sehen könnte, wenn das Ihren Bedürfnissen entspricht.

+0

Leider bin ich nicht in der Lage eine Oberflächenkarte Diagramm als Teil von dort Angebot zu sehen. – Martin

+0

Dundas-Diagramm ist nicht mehr verkauft. Es hatte auch nie eine Oberflächendiagramm. Die beste Oberflächenanalyse ist Nevron. –

5

Es könnte nicht mein Geschäft sein, da ich nie C# /. NET Framework/etc verwendet habe, aber das sieht aus wie ein Netzdiagramm einer Matrix.

Wir haben Octave in Uni eingeführt und eines der Pakete erlaubt uns Mesh-Plot-Matrizen. Das Paket Octave verwendet zum Plotten ist . Ich weiß nicht, ob Sie, wenn Sie das an .NET 3.5 haken können, so dass es nicht viel helfen kann, aber es ist Arbeit having a look.

octave mesh plot http://www.network-theory.co.uk/docs/octave3/mesh.png

4

Hängt davon ab, wie viel Sie ausgeben möchten es gibt es viele Möglichkeiten, wir haben eine Vielzahl von Arbeiten in 3D-Grafik und haben es weitgehend in der Vergangenheit erkundet Im Folgenden werde ich einige Links zur Verfügung gestellt haben Sie

Hoffnung dies nützlich

7

Sie bereits über diese gekommen sind, aber ich dachte ich würde den CodeProject Artikel Plot 3D surfaces hinweisen. Ich bin mir nicht sicher, ob der Funktionsumfang für Ihre Anforderungen ausreicht, aber es ist eine Untersuchung wert, wenn Sie das nicht bereits getan haben. Der offensichtliche Vorteil ist, dass es frei und Open Source ist (so dass Sie es für Ihre speziellen Bedürfnisse erweitern können).

Beispiel Screenshot:

Eine weitere mögliche Alternative, die einigermaßen vollständig aussieht, ist die F# for Visualization Bibliothek. Dies ist kommerziell, aber nach dem Aussehen würde mehr das, was Sie brauchen könnten. Lassen Sie sich nicht davon abhalten, dass es für F # ausgelegt ist - sollten Sie es immer noch direkt von C# (oder vielleicht mit einer kleinen Menge von Interop, um Dinge sauberer zu machen) verwenden. Sicherlich sollte die von C# angebotene Funktionale Programmierung die Arbeit relativ einfach machen.

Beispiel Screenshot:

http://www.ffconsultancy.com/products/fsharp_for_visualization/images/surface_big.jpg

ich vorgeschlagen habe die erste (Codeproject) Option nur für den Fall, dass Ihre Anforderungen anpassen geschieht, obwohl es kann nicht gut. Die F # one wäre fast sicher gut genug. Beachten Sie, dass F # eine funktionale Sprache ist (und daher in der Regel für mathematische und wissenschaftliche Anwendungen verwendet wird). Es ist wahrscheinlich eine ausgezeichnete Option für alle Funktionen im Zusammenhang mit dem Plotten von Graphen - Sie sollten sogar den Teil des Programms schreiben, in dem Plotting ausgeführt wird die Sprache, besonders wenn es relativ komplex wird.

Hoffe, dass hilft.

-2

Vielleicht wollen Sie auch versuchen:

+0

Hast du die Frage nicht gelesen? - Benötigen Sie eine Oberflächendiagramm. Keiner von diesen hat eine Oberflächendiagramm. –

2

die wir verwendet haben, bevor Nevron für andere WinForms Charts und sie waren großartig - th Das Produkt hat funktioniert und der Tech Support war sehr hilfreich.

Sie scheinen Oberfläche Charts zu tun (zumindest wie ich sie verstehe): 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

(ich versuchte, sie richtigen Links zu machen, sondern weil ich neu bin war ich nicht mehr setzen in erlaubt als 1)

2

Ich würde empfehlen, Scinet Chart von http://www.obacs.com zu verwenden. Es hat viele Charting-Optionen und viel billiger im Vergleich zu Alternativen.

2

Ich würde etwas Vorsicht mit Nevron empfehlen. Ich habe umfangreiche Erfahrung, da ich sie in den letzten 5 Jahren für alle meine Charts in einer Enterprise BI-Anwendung verwendet habe.

Es gibt viel über Nevron mögen:

  • die Charts aussehen!
  • die API ist ziemlich gut
  • gibt es viele Diagrammtypen
  • der Preis stimmt (sie billiger sind als viele ihrer Konkurrenten wie Dundas)
  • Tech-Support ist ziemlich gut, können Sie die Entwickler in der Regel direkt mailen und eine gute Antwort von ihnen bekommen. Sie sind mehr als glücklich, neue Diagrammtypen für Sie hinzuzufügen, wenn Sie bereit sind, einige Informationen zu den Anforderungen zu geben. Sie bauten eine tolle Venn-Diagramm-Komponente für mich :)

Alles gut so weit? Der Mörder für mich muss Schmerz sein, der involviert ist, wenn neue Versionen der Suite veröffentlicht werden. Wir verwenden Nevron für unsere Charts und Infragistics für unsere UI-Komponenten. Ich kann unsere Anwendung in der Regel innerhalb eines halben Tages auf eine neue Version von Infragistics aktualisieren. Ein neues Nevron Upgrade kann bis zu 4 Wochen dauern.

Sie haben ihr Objektmodell viele Male geändert und haben eine Erfolgsbilanz beim Brechen der Schnittstellen-Kompatibilität und beim Ändern der Art und Weise, wie Sie Dinge tun. Ich habe ein Gefühl der Angst, jedes Mal, wenn ich ein Nevron Upgrade Preform muss ...

Ein anderes Wort der Warnung, ihre Handhabung von Achsen Kennzeichnung lässt viel zu wünschen übrig. Ich habe viel Zeit damit verbracht, zu versuchen, Achsenbeschriftungen gut aussehen zu lassen. Die Unterstützung dafür hat sich in den letzten Releases verbessert, ist aber immer noch nicht da.

+0

Danke Steve - ich habe ihr Angebot ernsthaft angeschaut und du hast ein paar großartige Beiträge hinzugefügt. – Martin

+0

Beachten Sie außerdem, dass Sie für jeden Webserver, auf dem Nevron ausgeführt wird, eine separate Lizenz erwerben müssen, wenn Sie ASP.Net verwenden. Es gibt keinen Preis für eine solche Lizenz auf ihrer Website, aber verschiedene Online-Reseller zitiere etwa $ 200 für einen. Dies ist, was Nevron Lizenzvereinbarung sagt: "Die Standard-1-Entwickler-Lizenz enthält auch 1 Webserver-Lizenz. Zusätzliche Web-Server-Lizenzen müssen erhalten werden, wenn Ihre Anwendung (en) auf mehr als einem kommerziellen Webserver eingesetzt wird." – demp

+0

Nevron Charts hatte viele Neufassungen, weil Nevron nach und nach neue und unterschiedliche Merkmale inkorporieren wollte. Dies kann niemals mit einer Infragistics-Komponente passieren, einfach deshalb, weil sie niemals neu geschrieben wird, um alle Funktionen von Nevron zu unterstützen. –

2

Sie möchten vielleicht Super 2d/3D Graph Bibliothek von Software Siglo XXI betrachten (es ist lizenzfrei und es ist sehr billig).

Beispielcode:

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 

Hier ist der Link: Super 2d/3d Graph Library product page

1

Wie kann diese Liste ohne zumindest erwähnen ILNumerics abgeschlossen sein?

Haftungsausschluss: Ich bin voreingenommen, wenn ich im ILNumerics-Team arbeite. Aber unser Visualization Engine bringt die flexibelsten und schnellsten Oberflächenparzellen, die heute verfügbar sind. Das sagen unsere Kunden. Sie können sich kostenlos testen - auch direkt auf unserer Website.

Edit: ein sehr einfacher Aufbau einer Oberflächendarstellung in ILNumerics würden wie folgt erreicht werden:

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() } 
    } 
}; 

sind alle Szenen aus einfachen Objekten in einer Szene Graph zusammengesetzt. Sie können alles ändern und steuern. Dies ist auf wissenschaftliche Daten spezialisiert. Versuchen Sie, und ändern Sie dieses Beispiel online:

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

+0

Die Zugehörigkeit zu dem vorgeschlagenen Produkt ist ein guter Anfang. Damit dies jedoch eine gute Antwort ist, muss es mehr als eine Empfehlung sein. Eine gute Antwort, die eine Offsite-Ressource beinhaltet, enthält die wesentlichen Teile der Antwort für zukünftige Benutzer, insbesondere "Wie benutze ich dieses Ding, um das genaue Problem zu lösen, das ich in meiner Frage habe?" Siehe: [Wie kann ich mich mit einer externen Ressource in einer Community-freundlichen Weise verbinden?] (// meta.stackexchange.com/questions/94022) – Mogsdad

+0

Das sieht interessant und wahrscheinlich die nächste Lösung zu dem, was ich suchte! Vielen Dank - werde es versuchen. – Martin