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