>  기사  >  Java  >  데이터 시각화를 위해 Java에서 좌표계를 회전하는 방법은 무엇입니까?

데이터 시각화를 위해 Java에서 좌표계를 회전하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-05 20:40:02945검색

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

Java에서 데이터 및 텍스트의 좌표평면 회전

Java에서 데이터 및 텍스트를 조작할 때 좌표평면을 회전해야 할 수도 있습니다. 원하는 관점을 얻기 위해. 여기에는 지정된 위치에서 x 값이 오른쪽으로 진행되고 y 값이 위쪽으로 진행되도록 원점을 이동하고 평면을 회전시키는 작업이 포함될 수 있습니다. 또한 y축의 눈금 표시에 대해 회전된 레이블을 플롯해야 할 수도 있습니다.

원점 이동 및 좌표평면 회전

원점을 이동하고 좌표 평면을 회전하려면 다음 단계를 고려하십시오.

  1. 원점 번역:

    • Graphics2D의 번역() 메서드를 사용하여 원점을 원하는 위치로 이동합니다. 새 원점의 x 및 y 좌표를 지정합니다.
    • 예를 들어, 원점을 플롯 영역의 왼쪽 하단 모서리로 이동하려면:

      <code class="java">g2d.translate(leftStartPlotWindow, blueTop);</code>
  2. Y축 반전:

    • y축을 반전하려면 y 스케일 인수가 -1인 scale() 메서드를 사용합니다. . 그러면 y 값의 방향이 바뀌어 점이 아래에서 위로 그려집니다.
    • 예:

      <code class="java">g2d.scale(1, -1);</code>

Y축 눈금 표시에 대한 회전 레이블 표시

Y축 눈금 표시에 대한 회전된 레이블을 표시하려면 다음 단계를 따르십시오.

  1. 텍스트 회전:

    • Graphics2D의 Rotate() 메서드를 사용하여 텍스트를 시계 반대 방향으로 90도 회전합니다. 회전을 수행할 위치를 지정합니다.
    • 예를 들어 y축 레이블의 텍스트를 회전하려면:

      <code class="java">g2d.rotate(Math.toRadians(-90), 0, 0);</code>
  2. 라벨 그리기:

    • 텍스트를 회전한 후 drawString()을 사용하여 y축을 따라 적절한 위치에 눈금 표시 라벨을 그립니다.
    • 예:

      <code class="java">g.drawString(yString, -(height / 2) - (yStrWidth / 2), yStrHeight);</code>

코드 구현

업데이트된 버전은 다음과 같습니다. 좌표 평면을 회전하고 회전된 y축 레이블을 플롯하기 위해 필요한 수정 사항이 포함된 DataPanel 클래스:

<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>

위 내용은 데이터 시각화를 위해 Java에서 좌표계를 회전하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.