Java에서 데이터 및 텍스트의 좌표평면 회전
Java에서 데이터 및 텍스트를 조작할 때 좌표평면을 회전해야 할 수도 있습니다. 원하는 관점을 얻기 위해. 여기에는 지정된 위치에서 x 값이 오른쪽으로 진행되고 y 값이 위쪽으로 진행되도록 원점을 이동하고 평면을 회전시키는 작업이 포함될 수 있습니다. 또한 y축의 눈금 표시에 대해 회전된 레이블을 플롯해야 할 수도 있습니다.
원점 이동 및 좌표평면 회전
원점을 이동하고 좌표 평면을 회전하려면 다음 단계를 고려하십시오.
원점 번역:
예를 들어, 원점을 플롯 영역의 왼쪽 하단 모서리로 이동하려면:
<code class="java">g2d.translate(leftStartPlotWindow, blueTop);</code>
Y축 반전:
예:
<code class="java">g2d.scale(1, -1);</code>
Y축 눈금 표시에 대한 회전 레이블 표시
Y축 눈금 표시에 대한 회전된 레이블을 표시하려면 다음 단계를 따르십시오.
텍스트 회전:
예를 들어 y축 레이블의 텍스트를 회전하려면:
<code class="java">g2d.rotate(Math.toRadians(-90), 0, 0);</code>
라벨 그리기:
예:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!