none
Einfache Charts RRS feed

  • Frage

  • Hoi Freunde,

    will mal einen kleinen Chart realisieren und habe das ChartControl refernziert.
    Mit einem Codeschnipsel aus dem Netz läst sich aber nichts darstellen.

    Weiss jemand von euch wie man so etwas bewerkstelligen kann ? Bin nicht so der GrafikFreak, daher kA wie es klappen könnte.

    Hier der Code soweit:

    Private Sub test()
        Dim seriesNames(0)
        Dim categories(7)
        Dim values(7)
        Dim cht, c, axs
        
        seriesNames(0) = "Test"
        
        categories(0) = "Test 1"
        categories(1) = "Test 2"
        categories(2) = "Test 3"
        categories(3) = "Test 4"
        categories(4) = "Test 5"
        categories(5) = "Test 6"
        categories(6) = "Test 7"
        
        values(0) = 10
        values(1) = 22
        values(2) = 6
        values(3) = 41
        values(4) = 5
        values(5) = 14
        values(6) = 12
        
        Set cht = ChartSpace1.Charts.Add
        Set c = ChartSpace1.Constants
        cht.Type = c.chChartTypeLine
        
        cht.SetData c.chDimSeriesNames, c.chDataLiteral, seriesNames
        cht.SetData c.chDimCategories, c.chDataLiteral, categories
        cht.SeriesCollection(0).SetData c.chDimValues, c.chDataLiteral, values
        cht.Interior.Color = RGB(100, 100, 100)
        
        Set axs = cht.Axes(0)
        axs.Font.Color = RGB(0, 255, 0)
        Set axs = cht.Axes(1)
        axs.Font.Color = RGB(255, 0, 0)
    End Sub
    
    

    Der (das?) Chart bleibt einfach weiss ohne irgendwas drin.


    Doei
    Franz
    Dienstag, 29. September 2009 18:31

Antworten

  • Hi Franz,
    das ist doch kein VB.NET-Code. Das sieht nach VB6 aus.

    Eine Demo könnte so aussehen:

    Private Sub Command1_Click()

       With MSChart1
          ' Displays a 3d chart with 8 columns and 8 rows
          ' data.
          .chartType = VtChChartType2dLine
          .ColumnCount = 8
          .RowCount = 8
          For Column = 1 To .ColumnCount
             For row = 1 To .RowCount
                .Column = Column
                .row = row
                .RowLabel = "r" & row
                .Data = row * Column * 1
             Next row
            .ColumnLabel = "c" & Column
          Next Column
          ' Use the chart as the backdrop of the legend.
          .ShowLegend = True
       End With

    End Sub

    --
    Peter

    Dienstag, 29. September 2009 19:20
  • Hallo Franz,

    da solltest Du das Wiki konsultieren:
    http://zedgraph.org/wiki/index.php?title=Main_Page


    Auf der anderen Seite könntest Du auch die Microsoft Charts verwenden,
    denn die finden sich an vielen Stellen wieder und werden auch in .NET 4.0
    vertreten sein:
    http://blogs.msdn.com/alexgor/archive/2008/11/07/microsoft-chart-control-vs-dundas-chart-control.aspx

    Gruß Elmar
    Freitag, 2. Oktober 2009 07:54
  • Hallo Franz,

    sollte in einem neuen Tab unter "Data" erscheinen.
    Passiert das aus welchen Gründen auch immer -(die Toolbox war immer schon zickig ;-P
    Füge das Element manuell hinzu: Chart -> Assembly: System.Windows.Forms.DataVisualization

    Gruß Elmar
    Montag, 5. Oktober 2009 08:26
  • Hoi FreuNde,

    habe das nun gemanagt, aber bekomme die Date aus dem TXT-File nicht angezeigt.
    Nur die erste Zahl wird als Balkengrafik angezeigt, aber es sollen immer die letzten 20 Zahlen aus dieser Datei angezeigt werden.

    Wäre über einen Lösungsweg sehr dankbar, denn nichts ist abtörnender als wenn man nicht weiterkommt :-(

    Doei
    Franz
    • Als Antwort markiert Trixi-N Sonntag, 18. Oktober 2009 15:00
    Freitag, 16. Oktober 2009 19:05

Alle Antworten

  • Hi Franz,
    das ist doch kein VB.NET-Code. Das sieht nach VB6 aus.

    Eine Demo könnte so aussehen:

    Private Sub Command1_Click()

       With MSChart1
          ' Displays a 3d chart with 8 columns and 8 rows
          ' data.
          .chartType = VtChChartType2dLine
          .ColumnCount = 8
          .RowCount = 8
          For Column = 1 To .ColumnCount
             For row = 1 To .RowCount
                .Column = Column
                .row = row
                .RowLabel = "r" & row
                .Data = row * Column * 1
             Next row
            .ColumnLabel = "c" & Column
          Next Column
          ' Use the chart as the backdrop of the legend.
          .ShowLegend = True
       End With

    End Sub

    --
    Peter

    Dienstag, 29. September 2009 19:20
  • Hoi Peter,

    das ist das Chart Control 9.0 - also doch VB.net (oder) ?

    Probiere jetzt mal Deinen Vorschlag aus.


    Doei
    Franz
    Dienstag, 29. September 2009 19:22
  • P.S.:

    wie ist Dein Beispiel denn refenziert ?

    Doei
    Franz
    Dienstag, 29. September 2009 19:29
  • Hoi,

    habe mir ein Chart-Control aus dem Netz installiert - das geht sehr gut.

    Doei
    Franz
    Dienstag, 29. September 2009 20:52
  • Das Schlüsselwort "Set" in deinem Code für die Veränderung des Referenzzählers eines Objektes gibt es in VB.NET nicht mehr. Deshalb bin ich davon ausgegangen, dass es sich bei dir nicht um VB.NET handelt.

    -- 
    Peter 
    Mittwoch, 30. September 2009 03:52
  • Hallo Franz,

    welches denn - das Microsoft Chart Control für .NET 3.5?
    Dafür gibt es diverse Beispiele unter
    http://code.msdn.microsoft.com/mschart

    Gruß Elmar
    Donnerstag, 1. Oktober 2009 08:02
  • Hoi Elmar,

    es heisst ZEDgraph und kann etliche verschiedene Charts darstellen.
    Bin noch am rumtüfteln, insbesondere wie ich Daten aus einer txt-Datei zeielenweise einlesen und darstellen kann.

    Doei
    Franz
    Donnerstag, 1. Oktober 2009 10:46
  • Hallo Franz,

    da solltest Du das Wiki konsultieren:
    http://zedgraph.org/wiki/index.php?title=Main_Page


    Auf der anderen Seite könntest Du auch die Microsoft Charts verwenden,
    denn die finden sich an vielen Stellen wieder und werden auch in .NET 4.0
    vertreten sein:
    http://blogs.msdn.com/alexgor/archive/2008/11/07/microsoft-chart-control-vs-dundas-chart-control.aspx

    Gruß Elmar
    Freitag, 2. Oktober 2009 07:54
  • Hoi Elmar,

    hatte mir das Wiki schon eingetrichtert, bekomme aber kein Ergebnis nach meinem Wunsch (Zeilenweise einlesen auf einer simplen TextListe) da die beiden angefürhrten HowTo's sich auf zyklisches einlesen spezifiezieren.

    Hier mein Code für die simple Balkengrafik (benutzt RND-Funktion):

        Private Sub CreateGraph_GradientByZBars(ByVal z1 As ZedGraphControl)
            Dim myPane As GraphPane = z1.GraphPane
            myPane.Title.Text = "Benzinverbrauch pro 100 km"
            myPane.XAxis.Title.Text = "Messung"
            myPane.YAxis.Title.Text = "Liter"
    
    
            Dim list As New PointPairList()
            Dim rand As New Random()
    
            Dim i As Integer
            For i = 0 To 30
                Dim x As Double = CDbl(i) + 1
                Dim y As Double = rand.NextDouble() * 10
                Dim z As Double = i / 4.0
                list.Add(x, y, z)
            Next i
    
            Dim myCurve As BarItem = myPane.AddBar("Multi-Colored Bars", list, Color.Blue)
            Dim colors As Color() = {Color.Red, Color.Yellow, Color.Green, Color.Blue, Color.Purple}
            myCurve.Bar.Fill = New Fill(colors)
            myCurve.Bar.Fill.Type = FillType.GradientByZ
    
            myCurve.Bar.Fill.RangeMin = 0
            myCurve.Bar.Fill.RangeMax = 4
    
            myPane.Chart.Fill = New Fill(Color.White, Color.FromArgb(220, 220, 255), 45)
            myPane.Fill = New Fill(Color.White, Color.FromArgb(255, 255, 225), 45)
            ' Tell ZedGraph to calculate the axis ranges
            z1.AxisChange()
        End Sub 'CreateGraph_GradientByZBars 
        Private Sub SetSize()
            zg1.Location = New Point(10, 10)
            ' Leave a small margin around the outside of the control
            zg1.Size = New Size(ClientRectangle.Width - 10, ClientRectangle.Height - 10)
        End Sub
    da ich, wie gesagt nicht so der Grafik- bzw. Chartfreak bin stehe ich auf dem Schlauch ;-)
    Ich benutze in diesem Beispiel die Benzinverbrauchsaten meines PKWs - jeweils die letzten 30 Verbrauchsdaten sollen angezeigt werden.

    Doei
    Franz
    Samstag, 3. Oktober 2009 18:34
  • Hoi,

    ich habe mir mal das MSChart Control installiert, finde aber in den Verweisen keinen Hinweis darauf.
    Muss ich das System danach durchsuchen ?
    Laut Webseite von MS bindet es sich autom. in die Toolbox ein ?

    Doei
    Franz
    Samstag, 3. Oktober 2009 19:27
  • Hallo Franz,

    sollte in einem neuen Tab unter "Data" erscheinen.
    Passiert das aus welchen Gründen auch immer -(die Toolbox war immer schon zickig ;-P
    Füge das Element manuell hinzu: Chart -> Assembly: System.Windows.Forms.DataVisualization

    Gruß Elmar
    Montag, 5. Oktober 2009 08:26
  • Hoi Elmar,

    Danke - das war's :-)
    Habe ein Beispielsource von MS geladen, aber er findet das CHART-Objekt (im Form) nicht ?!
    Kann ja auch keines Hinzufügen da mir das Sysmbol dafür in der TB fehlt

    Doi
    Franz
    Montag, 5. Oktober 2009 13:03
  • Hallo Franz,

    das Symbol in der Toolbox ist nicht das entscheidene.
    Wichtig ist vor allem, dass die Referenz für die Chart-Komponenten im Projekt vorhanden sind.
    Siehe Verweise in den Projekt-Eigenschaften (auch hier System.Windows.Forms.DataVisualization.dll).

    Bei einem Beispielprojekt sollte der vorhanden.
    Und dass dieser Verweis gefunden werden kann, was nach einer Installation der
    Chart Komponenten normalerweise kein Problem sein sollte.

    Wenn es  gar nicht klappt: Welcher Beispielsource?

    Gruß Elmar

    Montag, 5. Oktober 2009 20:35
  • Hoi FreuNde,

    habe das nun gemanagt, aber bekomme die Date aus dem TXT-File nicht angezeigt.
    Nur die erste Zahl wird als Balkengrafik angezeigt, aber es sollen immer die letzten 20 Zahlen aus dieser Datei angezeigt werden.

    Wäre über einen Lösungsweg sehr dankbar, denn nichts ist abtörnender als wenn man nicht weiterkommt :-(

    Doei
    Franz
    • Als Antwort markiert Trixi-N Sonntag, 18. Oktober 2009 15:00
    Freitag, 16. Oktober 2009 19:05