JFreeChart - Ändert den Serienstrich von Diagrammlinien von durchgehend zu gestrichelt in einer Zeile

8

Die hier angenommene Antwort ( JFreechart (Java) - Wie zeichne ich Linien, die teilweise gestrichelte Linien und teilweise durchgezogene Linien sind? ) half mir, den Weg zu ändern, meine Serienstoßlinien auf meinem Diagramm zu ändern. Nachdem ich meinen Code durchgegangen und die Änderungen beobachtet habe, sehe ich, dass mein Serienstreich tatsächlich zu "gestrichelt" wechselt, wenn er (nach einem bestimmten Datum "gestrichelt") ausgeführt werden soll, aber wenn das Diagramm gerendert wird, ist die gesamte Reihenlinie gestrichelt . Wie kann ich eine Serienlinie erhalten, die zuerst gezeichnet wird und nach einem festgelegten Datum unterbrochen wird?

%Vor%     
MAK Design Labs 05.11.2012, 21:09
quelle

3 Antworten

6

Haben Sie versucht, AbstractRenderer#getItemStroke zu implementieren?

In diesem Beispiel verwende ich eine gestrichelte Linie für x & gt; 4 für Serie 2:

%Vor%

Obwohl dieses Beispiel und XYSeries und keine Daten verwenden, können Sie es für Ihre Bedürfnisse anpassen.

Hier ist das vollständige Beispiel

%Vor%     
GrahamA 06.11.2012, 09:02
quelle
1
  

Ich habe immer noch das gleiche Problem, dass sich die Linie nicht von durchgehend zu gestrichelt ändert, sondern dass sie die eine oder andere ist.

Die Methode setDrawSeriesLineAsPath() steuert, ob jede Serie als einzelner Pfad gezeichnet wird oder nicht. Dies schließt eine dynamische Änderung von Stroke aus, da getItemStroke() nur einmal pro Serie aufgerufen wird.

Nachtrag: Eine einfache Möglichkeit, dies zu überprüfen, besteht darin, setDrawSeriesLineAsPath() im @ GrahamA-Beispiel aufzurufen und in drawFirstPassShape() im Debugger zu brechen.

    
trashgod 06.11.2012 18:29
quelle
0

Ich denke, dass du es richtig machst und wenn es nicht funktioniert, ist es vielleicht nicht möglich? Ich rate nur hier, aber Sie könnten 2 Linien anstelle von 1 zeichnen. Ihre zweite Linie würde beginnen, wo Ihre erste Linie endet. Das könnte unordentlich werden, wenn Sie den Strich viel ändern möchten und wie Sie es bei jeder Iteration Ihrer Schleife abhängig von einer Bedingung ändern möchten, wird Ihr Code wahrscheinlich viel komplizierter. Oder zeichne einfach jeweils eine neue Zeile.

    
fonZ 05.11.2012 21:18
quelle