Maison  >  Article  >  Java  >  Comment faire pivoter le plan de coordonnées en Java pour la visualisation de données ?

Comment faire pivoter le plan de coordonnées en Java pour la visualisation de données ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 20:40:02945parcourir

How to Rotate the Coordinate Plane in Java for Data Visualization?

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 :

  1. Traduisez l'origine :

    • Utilisez la méthode traduire() de Graphics2D pour déplacer l’origine vers l’emplacement souhaité. Spécifiez les coordonnées x et y de la nouvelle 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>
  2. Inverser l'axe Y :

    • Utilisez la méthode scale() avec un facteur d'échelle y de -1 pour inverser l'axe y . Cela inversera la direction des valeurs y, ce qui entraînera des points tracés de bas en haut.
    • 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 :

  1. Faire pivoter le texte :

    • Utilisez la méthode rotate() de Graphics2D pour faire pivoter le texte de 90 degrés dans le sens inverse des aiguilles d'une montre. Spécifiez l'emplacement auquel effectuer la rotation.
    • Par exemple, pour faire pivoter le texte des étiquettes de l'axe Y :

      <code class="java">g2d.rotate(Math.toRadians(-90), 0, 0);</code>
  2. Dessinez les étiquettes :

    • Après avoir fait pivoter le texte, utilisez drawString() pour dessiner les étiquettes de graduation aux emplacements appropriés le long de l'axe y.
    • 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn