Swift3 LineChart - Mehrere Linien

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Swift3 LineChart - Mehrere Linien

    Hallo zusammen,
    wie schon erwähnt bin ich noch sehr neu auf dem Gebiet und brauche deshalb eure Hilfe.

    Ich habe es nach ewigem try and fail geschafft ein Liniendiagramm aus einem Array anzuzeigen mit hilfe von github.com/danielgindi/Charts

    Hier mein Code dazu, wie ich in ein View Objekt (Name: linechartballs - Klasse: LineChartView) das Array GlobalVariables.collectionballschris in einem Liniendiagramm anzeigen lasse

    C-Quellcode

    1. let values: [Double] = GlobalVariables.collectionballschris
    2. var entries: [ChartDataEntry] = Array()
    3. for (i, value) in values.enumerated()
    4. {
    5. entries.append(ChartDataEntry(x: Double(i), y: value))
    6. }
    7. let dataSet = LineChartDataSet(values: entries, label: player2name)
    8. linechartballs.backgroundColor = NSUIColor.lightGray
    9. linechartballs.leftAxis.axisMinimum = 0.0
    10. linechartballs.data = LineChartData(dataSet: dataSet)

    Nun zur Frage:
    Wie kann ich jetzt in das gleiche Diagramm noch eine weitere Linie mit den Werten von GlobalVariables.collectionballsdomi anzeigen lassen?
    Und wie ändere ich dann die Farbe der Linie?

    Habe ewig probiert und google gefragt aber nichts hinbekommen.

    Wäre sehr dankbar wenn mir jemand einen Tip hat! ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von christopherhahlbeck ()

  • Die Antwort wird dir wahrscheinlich nicht gefallen, aber vielleicht hilft es ja doch...

    Ich würde die Lib abschiessen - imho steht die knapp hinter CorePlot beim rennen um das überladenste Chart-Framework, und du scheinst ja selbst eher schlechte Erfahrungen gemacht zu haben.

    Von den Alternativen, die ich gefunden habe, erfüllt keine meine eigenen Anforderungen, aber ein paar sehen imho ganz ordentlich aus:
    github.com/i-schuetz/SwiftCharts
    github.com/gpbl/SwiftChart (klein und übersichtlich)
    github.com/tylyo/APLineChart (auch nicht so riesig, IB-Support)
  • Danke, ich habe es mit github.com/gpbl/SwiftChart bereits probiert und auch erfolgreich auf anderen views und in neuen Projekten ausprobiert.
    Aber in dem Projekt bzw. auf diesem View wo es angezeigt werden soll, sehe ich nur ein weißes Feld und kann den vertikalen Strich verschieben, es werden aber keine Graphen angezeigt.
    Kommt das jemandem bekannt vor was hier falsch sein kann?

    Der View um den es geht ist allerdings schon zu umfangreich - den will ich nicht "mal eben" neu machen...
  • Danke, habs hinbekommen. 8o
    Sogar mit der ursprünglichen lib github.com/danielgindi/Charts

    Das Stichwort ist "dataSets" - mit s am Ende. (plural)

    C-Quellcode

    1. let userDefaults = Foundation.UserDefaults.standard
    2. let player1name = userDefaults.string(forKey: "player1name")
    3. let player2name = userDefaults.string(forKey: "player2name")
    4. let values: [Double] = GlobalVariables.collectionballsdomi
    5. var entries: [ChartDataEntry] = Array()
    6. for (i, value) in values.enumerated()
    7. {
    8. entries.append(ChartDataEntry(x: Double(i), y: value))
    9. }
    10. let dataSet1 = LineChartDataSet(values: entries, label: player2name)
    11. let values1: [Double] = GlobalVariables.collectionballschris
    12. var entries1: [ChartDataEntry] = Array()
    13. for (i, value) in values1.enumerated()
    14. {
    15. entries1.append(ChartDataEntry(x: Double(i), y: value))
    16. }
    17. let dataSet2 = LineChartDataSet(values: entries1, label: player1name)
    18. linechartballs2.backgroundColor = NSUIColor.lightGray
    19. linechartballs2.data?.setValueTextColor(NSUIColor.black)
    20. linechartballs2.leftAxis.axisMinimum = 0.0
    21. linechartballs2.rightAxis.axisMinimum = 0.0
    22. let dataSets = [dataSet1, dataSet2]
    23. linechartballs2.data = LineChartData(dataSets: dataSets)
    Alles anzeigen
  • christopherhahlbeck schrieb:

    Dort sind aber X und Y Werte angegeben, ich habe aber nur y Werte und die X Achse soll automatisch nummeriert werden.
    Nö, in dem Beispiel-Code wird die X-Achste genauso durchnummeriert wie in deinem Codeschnippsel.



    So nebenbei, die Variablenname sind zum Teil schlecht gewählt. Bei manchen hast Du die 1 weggelassen und wiederum wo die 1 steht sollte eigentlich die 2 stehen.
    Wenn Du in Zeile 23 linechartballs2.data neu setzt, dann ist die Zeile 19 überflüssig. Das wird ja überschrieben.
  • Quellcode

    1. linechartballs2.data?.setValueTextColor(NSUIColor.black) /* Zeile 19 */
    2. linechartballs2.data = LineChartData(dataSets: dataSets) /* Zeile 23 */
    In Zeile 19 setzt Du Textfarbe vom aktuellen data, falls vorhanden.
    In Zeile 23 setzt Du data neu. Somit sollte Zeile 19 überflüssig sein, da Du data sowieso austauschen tust.

    Somit gehört setValueTextColor() nach data = LineChartData().

    Keine Ahnung, vllt. funktioniert auch dein Code, oder das ist nur Zufall, da es die Farbe Schwarz ist. Aber zuerst data setzen und danach die Textfarbe ändern, da die Textfarbe ein Attribute von data ist, klingt logischer.