Rotation du plan de coordonnées pour les données et le texte en Java
Lors de la manipulation de données et de texte en Java, il peut être nécessaire de faire pivoter le plan de coordonnées pour obtenir la perspective souhaitée. Cela peut impliquer de déplacer l'origine et de faire pivoter le plan afin que les valeurs x progressent vers la droite et les valeurs y vers le haut à partir d'un emplacement spécifié. De plus, il peut être nécessaire de tracer des étiquettes pivotées pour les graduations sur l'axe y.
Déplacement de l'origine et rotation du plan de coordonnées
Pour déplacer l'origine et faites pivoter le plan de coordonnées, considérez les étapes suivantes :
Traduisez l'origine :
Par exemple, pour déplacer l'origine vers le coin inférieur gauche de la zone tracée :
<code class="java">g2d.translate(leftStartPlotWindow, blueTop);</code>
Inverser l'axe Y :
Par exemple :
<code class="java">g2d.scale(1, -1);</code>
Traçage d'étiquettes pivotées pour les graduations de l'axe Y
Pour tracer des étiquettes pivotées pour les graduations de l'axe Y, suivez ces étapes :
Faire pivoter le texte :
Par exemple, pour faire pivoter le texte des étiquettes de l'axe Y :
<code class="java">g2d.rotate(Math.toRadians(-90), 0, 0);</code>
Dessinez les étiquettes :
Par exemple :
<code class="java">g.drawString(yString, -(height / 2) - (yStrWidth / 2), yStrHeight);</code>
Mise en œuvre du code
Voici une version mise à jour de la classe DataPanel avec les modifications nécessaires pour faire pivoter le plan de coordonnées et tracer les étiquettes de l'axe Y pivotées :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!