Charts: Standardzoomstufe an einer Position.

Erstellt am 4. Aug. 2015  ·  8Kommentare  ·  Quelle: danielgindi/Charts

Vor allem eine tolle Bibliothek. Ich wünschte, ich hätte diese Bibliothek früher gefunden, ich lerne immer noch alle Funktionen. Es gibt eine grundlegende Funktion, aber ich brauche etwas Hilfe, um es einzurichten, nämlich ein einfaches Linien- oder Balkendiagramm mit 100 Datenpunkten zu zeichnen, aber anstatt all diese 100 Datenpunkte anzuzeigen, wenn das Diagramm angezeigt wird, gibt es eine? Möglichkeit, standardmäßig die letzten 10 Datenpunkte oder die ersten 10 Datenpunkte anzuzeigen, und dann kann der Benutzer scrollen, um den Rest anzuzeigen. Ist diese Funktion verfügbar und wie wird sie eingerichtet? Danke

Hilfreichster Kommentar

@spauldingim Beim Zurücksetzen der Daten meines Balkendiagramms ist ein Problem hineingezoomt wurde.

Behoben, indem jedes Mal zuerst herausgezoomt wurde:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

Alle 8 Kommentare

Ich habe festgestellt, dass es bei meinem alten Beitrag ähnlich ist. Was ich gebeten habe, ist, den Skalierungs- / Scroll-Offset-Zustand wiederherzustellen, während das Diagramm zurückgesprungen wird. Sie können einen Blick auf nehmen dies: https : //github.com/danielgindi/ios-charts/issues/226

Vielen Dank für Ihre schnelle Antwort, ich habe diesen Beitrag schon einmal gesehen, bin mir aber immer noch nicht sicher, was ich einstellen soll, um das gewünschte Ziel zu erreichen. Ich habe nur 1 VC, also brauche ich nicht das 2. VC zu übertragen. wenn es den gleichen Code gibt, wird sehr geschätzt.

Ich bin mir nicht sicher, aber es ist keine leichte Aufgabe, sehr schnell eine Lösung zu finden.

Wenn ich Sie wäre, würde ich mir zuerst panGestureRecognized und pinchGestureRecognized ansehen, um zu verstehen, wie das Zoomen/Scrollen implementiert ist. Im Allgemeinen muss es einige Berechnungen über die Berührungsposition durchführen und den neuen Skalierungs-/Übersetzungswert abrufen und einige CGAffineTransform ausführen und die Matrix über viewPortHandler.refresh()

Es gibt viele APIs, die in ChartTransformer und ChartViewPortHandler helfen können. Um die Datenwerte und Bildschirmpixel ineinander umzuwandeln.

Sie müssen darüber nachdenken, wie Sie den Übersetzungswert der ersten/letzten 10 Datenpunkte in Anbetracht der Skalierungsstufe berechnen. Ich kann mir vorstellen, dass ich den spezifischen Datenpunktwert angesichts der Skalierungsebene erhalten könnte. Versuchen Sie, eine Berechnung durchzuführen, damit viewPortHandler.contentRect nur die Daten enthält, die Sie benötigen (über den ersten Daten- und den letzten Datenpunkt-x-Wert), damit wir berechnen können die Grenzen und den Offset, und aktualisieren Sie die Matrix.

Willkommen bessere Antworten :) Ich gebe nur ein paar Sekunden, um darüber nachzudenken und meine Arbeit fortzusetzen.

Natürlich müssen Sie verstehen, wie wir die Matrix erstellen über:

self._viewPortHandler.restrainViewPort(offsetLeft: left, offsetTop: top, offsetRight: right, offsetBottom: bottom)
prepareOffsetMatrix()
prepareValuePxMatrix()

Dies gelang mir, nachdem ich ein wenig damit gespielt hatte. Es ist eigentlich ziemlich direkt.

chart.data = data;   // This is the MAIN reason, data for the chart has to be set first before the next 2 steps otherwise they will just get ignored like nothing has been set.

// setze den max x-Datenpunkt auf 10, was ich wollte, um von 100 Datenpunkten nur 10 Datenpunkte für das Linien- oder Balkendiagramm anzuzeigen.
[chart setVisibleXRan geMaximum:10 ];
// Verschieben Sie die Diagrammansicht auf 90 Index von X, das sind die letzten 10 Einträge, die ich sehen möchte. und es funktioniert wie erwartet.
[Diagramm bewegenViewToX:90 ];

schöner Fang!

Wenn Sie die Ansicht nicht auf die Anzeige von nur 10 Datenpunkten 'sperren' möchten, können Sie Folgendes in viewDidLoad verwenden.
float xScale = totalPoints / initialPointsDisplayed;
[Chart Zoom: xScale scaleY: 1,0 x: 0,0 y: 0,0];
[self.chartView mo veViewToX:totalPoints - initialPointsDisplayed];

@spauldingim Beim Zurücksetzen der Daten meines Balkendiagramms ist ein Problem hineingezoomt wurde.

Behoben, indem jedes Mal zuerst herausgezoomt wurde:
barChartView.zoom(scaleX: 0, scaleY: 0, x: 0, y: 0)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen