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 中国語 Web サイトの他の関連記事を参照してください。