"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como adicionar eixos e tags aos arquivos PNG em Java?

Como adicionar eixos e tags aos arquivos PNG em Java?

Postado em 2025-05-03
Navegar:739

How to Annotate a PNG File with Axes and Labels in Java?

como anotar um arquivo png com eixos e etiquetas em java

adicionar eixos e etiquetas a uma imagem png existente pode ser um desafio. Em vez de tentar modificações que podem levar a erros e inconsistências, é recomendável integrar as anotações durante o processo de criação de gráficos. O exemplo a seguir ilustra como criar um gráfico personalizado com anotações personalizadas:

import java.awt.color; importar java.awt.eventqueue; importar java.awt.shape; importar java.awt.geom.ellipse2d; importar java.util.arraylist; importar java.util.list; importar java.util.random; importar javax.swing.jframe; importar org.jfree.Chart.ChartFactory; importar org.jfree.Chart.ChartPanel; importar org.jfree.chart.jfreechart; importar org.jfree.chart.axis.valueaxis; importar org.jfree.chart.plot.plotorientation; importar org.jfree.chart.plot.xyplot; importar org.jfree.chart.renderer.xy.xylineandshapenderer; importar org.jfree.data.xy.xydataset; importar org.jfree.data.xy.xyseries; importar org.jfree.data.xy.xyseriescollection; classe pública ResponseTime { private estático final int n = 600; Title de sequência final estática privada = "ResponseTime"; private estático final aleatório = novo aleatório (); Círculo de forma final estática privada = new Ellipse2d.double (-3, -3, 6, 6); Linha de cor estática privada estática = color.gray; Private ChartPanel CreatePanel () { Jfreechart Chart = ChartFactory.createxylineChart ( Título, "Tempo decorrido (segundo)", "tempo de resposta (segundo)", crioutaset (), plotorientation.vertical, verdadeiro, verdadeiro, falso); XyPlot plot = Chart.getxyPlot (); MyRenderer Renderer = New MyRenderer (True, True, N); plot.setRenderer (renderizador); renderer.SetSeriESShape (0, círculo); renderer.setSeriespaint (0, linha); renderer.setusefillpaint (true); renderer.SetSeriESSHAPESFLIEL (0, TRUE); renderer.SetSeriESSHAPESVISIBLE (0, TRUE); renderer.SetUseOutLinePaint (true); renderer.setSeriesOutLinePaint (0, linha); Alcance valueaxis = plot.getrangaxis (); range.setLowerBound (0,5); retornar novo ChartPanel (gráfico); } Classe estática privada Myrenderer estende Xylineandshapenderer { Lista privada CLUT; Public Myrenderer (linhas booleanas, formas booleanas, int n) { super (linhas, formas); CLUT = novo ArrayList (n); para (int i = 0; i

Essa abordagem permite controlar todos os aspectos do gráfico, incluindo o estilo e a colocação dos eixos, rótulos e elementos plot. Veja como usá -lo:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class ResponseTime {

    private static final int N = 600;
    private static final String title = "ResponseTime";
    private static final Random random = new Random();
    private static final Shape circle = new Ellipse2D.Double(-3, -3, 6, 6);
    private static final Color line = Color.gray;

    private ChartPanel createPanel() {
        JFreeChart chart = ChartFactory.createXYLineChart(
            title, "Elapsed Time (secs)", "Response Time (secs)",
            createDataset(), PlotOrientation.VERTICAL, true, true, false);
        XYPlot plot = chart.getXYPlot();
        MyRenderer renderer = new MyRenderer(true, true, N);
        plot.setRenderer(renderer);
        renderer.setSeriesShape(0, circle);
        renderer.setSeriesPaint(0, line);
        renderer.setUseFillPaint(true);
        renderer.setSeriesShapesFilled(0, true);
        renderer.setSeriesShapesVisible(0, true);
        renderer.setUseOutlinePaint(true);
        renderer.setSeriesOutlinePaint(0, line);
        ValueAxis range = plot.getRangeAxis();
        range.setLowerBound(0.5);
        return new ChartPanel(chart);
    }

    private static class MyRenderer extends XYLineAndShapeRenderer {

        private List clut;

        public MyRenderer(boolean lines, boolean shapes, int n) {
            super(lines, shapes);
            clut = new ArrayList(n);
            for (int i = 0; i  substituindo este método, você pode especificar uma cor personalizada para cada item no gráfico. O método color.gethsbcolor () é usado para gerar um espectro completo de cores.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3