VB.NET Chart ve 3D   otázka

VB.NET, WinForms

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

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback