Rotierende Koordinatenebene für Daten und Text in Java
Beim Bearbeiten von Daten und Text in Java kann es erforderlich sein, die Koordinatenebene zu drehen eine gewünschte Perspektive zu gewinnen. Dies kann das Verschieben des Ursprungs und das Drehen der Ebene umfassen, sodass die X-Werte von einer bestimmten Position aus nach rechts und die Y-Werte nach oben verlaufen. Darüber hinaus kann es erforderlich sein, gedrehte Beschriftungen für Teilstriche auf der Y-Achse zu zeichnen.
Verschieben des Ursprungs und Drehen der Koordinatenebene
Zum Verschieben des Ursprungs und Drehen Sie die Koordinatenebene und beachten Sie die folgenden Schritte:
Übersetzen Sie den Ursprung:
Um beispielsweise den Ursprung in die untere linke Ecke des gezeichneten Bereichs zu verschieben:
<code class="java">g2d.translate(leftStartPlotWindow, blueTop);</code>
Y-Achse umkehren:
Zum Beispiel:
<code class="java">g2d.scale(1, -1);</code>
Gedrehte Beschriftungen für Y-Achsen-Teilstriche zeichnen
Um gedrehte Beschriftungen für Y-Achsen-Teilstriche zu zeichnen, führen Sie die folgenden Schritte aus:
Drehen Sie den Text:
Zum Beispiel, um den Text für die Y-Achsenbeschriftungen zu drehen:
<code class="java">g2d.rotate(Math.toRadians(-90), 0, 0);</code>
Zeichnen Sie die Beschriftungen:
Zum Beispiel:
<code class="java">g.drawString(yString, -(height / 2) - (yStrWidth / 2), yStrHeight);</code>
Code-Implementierung
Hier ist eine aktualisierte Version der DataPanel-Klasse mit den notwendigen Änderungen, um die Koordinatenebene zu drehen und gedrehte Y-Achsenbeschriftungen darzustellen:
<code class="java">import java.awt.*; import java.awt.geom.AffineTransform; import javax.swing.*; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.*; class DataPanel extends JPanel { Insets ins; // holds the panel's insets ArrayList<Double> myDiffs; double maxDiff = Double.NEGATIVE_INFINITY; double minDiff = Double.POSITIVE_INFINITY; double maxPlot; DataPanel(ArrayList<Double> Diffs, int h, int w){ setOpaque(true);// Ensure that panel is opaque. setPreferredSize(new Dimension(w, h)); setMinimumSize(new Dimension(w, h)); setMaximumSize(new Dimension(w, h)); myDiffs = Diffs; repaint(); this.setVisible(true); } protected void paintComponent(Graphics g){// Override paintComponent() method. super.paintComponent(g); //get data about plotting environment and about text int height = getHeight(); int width = getWidth(); ins = getInsets(); Graphics2D g2d = (Graphics2D)g; FontMetrics fontMetrics = g2d.getFontMetrics(); String xString = ("x-axis label"); int xStrWidth = fontMetrics.stringWidth(xString); int xStrHeight = fontMetrics.getHeight(); String yString = "y-axis label"; int yStrWidth = fontMetrics.stringWidth(yString); int yStrHeight = fontMetrics.getHeight();</code>
Das obige ist der detaillierte Inhalt vonWie dreht man die Koordinatenebene in Java zur Datenvisualisierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!