Dobrý den, prosím o pomoc. Našel jsem příklad použití komponenty chart ve VB.NET form aplikaci, příklad funguje, ale když jsem jej chtěl aplikovat na moje potřeby narazil jsem. Obecně mám množinu bodů o souřadnicích x,y,z, tedy BOD(x,y,z). Ale jak dostanu tyto body do bodového 3D grafu, když chart umožňuje přidávat body pomocí Chart1.Series(0).Points.AddXY (x,y)... tedy jen 2 souřadnice. Prosím o ukázku kódu, jak by to mělo probíhat, aby se v body zobrazily ve 3D. Není mi jasné, jak tam dostanu ten třetí rozměr. Je tam finta v tom dvojitém cyklu, viz ukázka Private Sub DrawChart() ? Jak udělat popis osy Z, případně nějaké hodnoty od-do? Eventuálně doporučí někdo knihovnu pro vizualizaci 3D dat, ideálně free? Děkuji Funkční příklad z netu:
Imports System.Windows.Forms.DataVisualization.Charting
Public Class Form1
Private gPoints(9, 9) As Integer
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
TrackBar1.Maximum = 0
TrackBar1.Minimum = -90
TrackBar1.LargeChange = 50
TrackBar1.SmallChange = 50
TrackBar1.Value = -45
'create the surface data
Dim rand As New Random
For y = 0 To 9
For x = 0 To 9
gPoints(x, y) = (9 - y) * x + rand.Next(0, 10)
Next
Next
'setup the chart
With Chart1.ChartAreas(0)
.AxisX.Title = "X"
.AxisX.MajorGrid.LineColor = Color.Black 'Barva os
.AxisX.Minimum = 0
.AxisX.Maximum = 10
.AxisX.Interval = 1
.AxisY.Title = "Y"
.AxisY.MajorGrid.LineColor = Color.Black
.AxisY.Minimum = 0
.AxisY.Maximum = 10
.AxisY.Interval = 1
.BackColor = Color.WhiteSmoke 'Barva výplně grafu
.BackGradientStyle = GradientStyle.Center
.BorderColor = Color.Blue
.BorderDashStyle = ChartDashStyle.Dot
.BorderWidth = 1
.ShadowOffset = 2
' Enable 3D charts
.Area3DStyle.Enable3D = True
End With
DrawChart()
End Sub
Private Sub DrawChart()
'draw the chart
Chart1.Series.Clear()
Chart1.ChartAreas(0).Area3DStyle.Rotation = TrackBar1.Value 'otáčení doleva doprava -90 až 0
Chart1.ChartAreas(0).Area3DStyle.Inclination = 45 'natočení ve svislé ose -90 až +90
Chart1.ChartAreas(0).Area3DStyle.Perspective = 5 '0 bez perspektivy, > 0 přidává perspektivu (rozšiřuje vršek) 0 až 100
Chart1.ChartAreas(0).Area3DStyle.WallWidth = 1 'tloušťka os, čára nebo až obdélník
For i = 0 To 9
Chart1.Series.Add("z" & i.ToString)
Chart1.Series(i).ChartType = DataVisualization.Charting.SeriesChartType.Point
Chart1.Series(i).BorderWidth = 0
Chart1.Series(i).Color = Color.Black
Chart1.Series(i).IsVisibleInLegend = False
'Set series strip width
Chart1.Series(i)("PointWidth") = "1"
' Set series points gap to 1 pixels
Chart1.Series(i)("PixelPointGapDepth") = "1"
For x = 0 To 9
Chart1.Series(i).Points.AddXY(x, gPoints(x, i))
Next
Next
End Sub
Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
DrawChart()
End Sub
End Class
|