Olá Amigos,
Estou com um problema, eu tenho um gráfico conforme a imagem abaixo, e eu queria que a linha com os zeros não fosse impressa. Agradeço a todos que puderem me ajudar.
Olá Amigos,
Estou com um problema, eu tenho um gráfico conforme a imagem abaixo, e eu queria que a linha com os zeros não fosse impressa. Agradeço a todos que puderem me ajudar.
Segue abaixo o código fonte:
package br.com.avanti.grafico;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.text.DecimalFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.Layer;
import org.jfree.ui.RectangleAnchor;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.TextAnchor;
public class LineChartDemo1 extends ApplicationFrame {
public LineChartDemo1(String title) {
super(title);
// TODO Auto-generated constructor stub
final CategoryDataset dataset = createDataSet();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel( chart );
chartPanel.setPreferredSize( new Dimension( 800, 300 ) );
setContentPane( chartPanel );
}
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
private CategoryDataset createDataSet(){
// row keys
final String series1 = "Indicador Anual";
// column keys...
final String janeiro = "Jan";
final String fevereiro = "Fev";
final String marco = "Mai";
final String abril = "Abr";
final String maio = "Mar";
final String junho = "Jun";
final String julho = "Jul";
final String agosto = "Ago";
final String setembro = "Set";
final String outubro = "Out";
final String novembro = "Nov";
final String dezembro = "Dez";
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue( 3.31, series1, janeiro );
dataset.addValue( 30.50, series1, fevereiro );
dataset.addValue( 41.56, series1, marco);
dataset.addValue( 67.96, series1, abril);
dataset.addValue( 98.82, series1, maio);
dataset.addValue( 0.00, series1, junho);
dataset.addValue( 0.00, series1, julho);
dataset.addValue( 0.00, series1, agosto);
dataset.addValue( 0.00, series1, setembro);
dataset.addValue( 0.00, series1, outubro);
dataset.addValue( 0.00, series1, novembro);
dataset.addValue( 0.00, series1, dezembro);
return dataset;
}
private JFreeChart createChart( final CategoryDataset dataset ){
final JFreeChart chart = ChartFactory.createLineChart(
"",
"",
"",
dataset,
PlotOrientation.VERTICAL,
true,
false,
true);
// Definindo cor de fundo do gráfico
chart.setBackgroundPaint( Color.white );
// Pegando a plotagem do gráfico para modificar o gráfico
final CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint( Color.white );
// Definindo valores no eixo y
plot.getRangeAxis().setRange(0, 130);
// Definindo a escala do eixo y do gráfico
NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();
numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
numberAxis.setAutoRangeIncludesZero(false);
numberAxis.setTickUnit(new NumberTickUnit(20));
numberAxis.setRange(0, 110);
// Mudando a cor da linha do gráfico
CategoryItemRenderer categoryitemrenderer = plot.getRenderer();
categoryitemrenderer.setSeriesPaint(0, Color.decode("#000066"));
// Mudando a espessura da linha do gráfico
final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setSeriesStroke( 0,
new BasicStroke(0.7f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
0.0f, new float[] {1.0f, 1.0f}, 0.0f ));
// Exibindo os valores nas linhas do gráfico
renderer.setSeriesItemLabelsVisible(0, true);
StandardCategoryItemLabelGenerator labelGenerator =
new StandardCategoryItemLabelGenerator("{2}",new DecimalFormat("#,##0.00##"));
renderer.setSeriesItemLabelPaint(0, Color.decode("#000066"));
renderer.setSeriesItemLabelFont(0, new Font( "SansSerif", Font.PLAIN, 10));
renderer.setSeriesItemLabelGenerator(0, labelGenerator);
// Exibindo a gráfico princiapl
renderer.setSeriesShapesVisible(0, true);
// Definindo as cores de fundo do gráfico conforme eixo y
final IntervalMarker target = new IntervalMarker(0.0, 80.0);
target.setLabel("");
target.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
target.setLabelAnchor(RectangleAnchor.LEFT);
target.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
target.setPaint( Color.decode( "#FFD2D2" ) );
target.setOutlinePaint( Color.BLACK );
target.setOutlineStroke( new BasicStroke(1.1f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
0.0f, new float[] {1.0f, 1.0f}, 0.0f ) ) ;
plot.addRangeMarker(target, Layer.BACKGROUND);
final IntervalMarker target1 = new IntervalMarker(80.0, 90.0);
target1.setLabel("");
target1.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
target1.setLabelAnchor(RectangleAnchor.LEFT);
target1.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
target1.setPaint( Color.decode( "#FFFFD2" ) );
target1.setOutlinePaint( Color.BLACK );
target1.setOutlineStroke( new BasicStroke(1.1f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
0.0f, new float[] {1.0f, 1.0f}, 0.0f ) ) ;
plot.addRangeMarker(target1, Layer.BACKGROUND);
final IntervalMarker target2 = new IntervalMarker(90.0, 120.0);
target2.setLabel("");
target2.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
target2.setLabelAnchor(RectangleAnchor.LEFT);
target2.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
target2.setPaint( Color.decode( "#D2FFD2" ) );
target2.setOutlinePaint( Color.BLACK );
target2.setOutlineStroke( new BasicStroke(1.1f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
0.0f, new float[] {1.0f, 1.0f}, 0.0f ) ) ;
plot.addRangeMarker(target2, Layer.BACKGROUND);
final IntervalMarker target3 = new IntervalMarker(120.0, 240.0);
target3.setLabel("");
target3.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
target3.setLabelAnchor(RectangleAnchor.LEFT);
target3.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
target3.setPaint( Color.decode( "#FFFFD2" ) );
target3.setOutlinePaint( Color.BLACK );
target3.setOutlineStroke( new BasicStroke(1.1f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
0.0f, new float[] {1.0f, 1.0f}, 0.0f ) ) ;
plot.addRangeMarker(target3, Layer.BACKGROUND);
return chart;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
final LineChartDemo1 demo = new LineChartDemo1( "Line Chart Demo" );
demo.pack();
RefineryUtilities.centerFrameOnScreen( demo );
demo.setVisible( true );
}
}
Olá Amigos,
Consegui resolver esse problema, quando eu não quero que um determinado valor apareca, mas quero que os valores x apareçam, é só eu preencher meu dataset da seguinte forma
dataset.addValue( null, series1, junho);
dataset.addValue( null, series1, julho);
dataset.addValue( null, series1, agosto);
dataset.addValue( null, series1, setembro);
dataset.addValue( null, series1, outubro);
dataset.addValue( null, series1, novembro);
dataset.addValue( null, series1, dezembro);
Abraços
marca teu código como “Code”…
Senão não tem santo que ajude!
ok, vou fazer isso, obrigado pela dica.
Abraços
[quote=Zenas]Olá Amigos,
Estou com um problema, eu tenho um gráfico conforme a imagem abaixo, e eu queria que a linha com os zeros não fosse impressa. Agradeço a todos que puderem me ajudar.[/quote]
oi… por favor, vc ensina aprender para ver como fazer a programação de programar e o primeiro de Arquivo :“nova projeto de que é nome só” depois, colocar de criar classe principal se que escreve javaaplicativo é normal só outra coisa se escrever javaaplicativo.LineGenerator[/u],só , segunda de biblicotecas que pegar a programar de “JFreeChart: Line Chart Demo 6”[u], adicionarJAR/pasta ou propriedade que JFreechart-1.13,só, terceira escrever “line chart demo 6"se apagar outra escrever as palavras de grafico, x também tempo,Y se apagar outra escrever " tensao”, o primeiro de F6 abrir se a programar de grafico…muito bom.[color=blue] [/color]