JFreeChart - Valores reais dentro do gráfico

Salve a todos…

Por favor, me ajudem!!!

Estou montando meus gráficos e não estou conseguindo fazer com que apareça os valores dentro gráfico (ex. o valor real em cima da barra). A princípio tudo ok (o gráfico com barras e linhas, a legenda, a escala nos eixos), mas nada de valores dos itens.
Até já copie códigos de gráficos do modo q eu quero e mesmo assim não aparece os valores.

Segue meu código:

        JFreeChart grafico = ChartFactory.createBarChart3D("Dupla Participação", "", "", dataset2, PlotOrientation.VERTICAL, true, true, false);

        CategoryPlot plot = grafico.getCategoryPlot();
        plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
        plot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT);


        CategoryItemRenderer renderer1 = plot.getRenderer();
        renderer1.setSeriesPaint(0, Color.red);
        renderer1.setSeriesPaint(1, Color.ORANGE);
        renderer1.setSeriesPaint(2, Color.GREEN);
        renderer1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
        renderer1.setSeriesItemLabelsVisible(1, Boolean.TRUE);
        renderer1.setSeriesItemLabelsVisible(2, Boolean.TRUE);

        CategoryDataset datasetValores = dataset1;
        ValueAxis axis2 = new NumberAxis3D("Porcentagem Atingida");
        plot.setRangeAxis(1, axis2);
        plot.setDataset(1, datasetValores);

        plot.mapDatasetToRangeAxis(1, 1);
        CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
        renderer2.setSeriesPaint(0, Color.blue);
        plot.setRenderer(1, renderer2);

        grafico.setBackgroundPaint(Color.WHITE);
        ChartUtilities.writeChartAsPNG(response.getOutputStream(), grafico, 880, 300);

Se alguem puder me ajudar…
GRATO desde já

Será que pode ser alguma coisa com a versão da API?
Estou utilizando a jfreechart-1.0.9.

Alguém por fovor!!!

Cara, tá acontecendo o mesmo comigo.

Se conseguir, por favor poste aqui.

puxa galera…
tbm to prescisando disso.
ja procurei na web e nada.
pelo jeito ninguem sabe como fazer isso.

c conseguir posto aki dexo postado aki

abraço a todos

adaptem esse trecho de código:

renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(false);
ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.CENTER,
TextAnchor.CENTER, TextAnchor.CENTER, 0.0);
renderer.setBasePositiveItemLabelPosition(p);

renderer é um CategoryItemRenderer…

[quote=Fernando Generoso da Rosa]adaptem esse trecho de código:

renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(false);
ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.CENTER,
TextAnchor.CENTER, TextAnchor.CENTER, 0.0);
renderer.setBasePositiveItemLabelPosition(p);

renderer é um CategoryItemRenderer…[/quote]

valew cara…
tava mto tepo atrás disso.

PROBLEMA RESOLVIDO.

Vou ter que implementar essa CategoryItemRenderer toda?

Pessoal, fiz o seguinte:

CategoryItemRenderer renderer = plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelFont(fonte);
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0));
chart.getCategoryPlot().setRenderer(renderer);

O que há de errado. Não estão aparecendo os rótulos ainda.

static class CustomRenderer extends BarRenderer {

		
		private Paint[] colors;

		
		public CustomRenderer(Paint[] colors) {
			this.colors = colors;
		}

		
		public Paint getItemPaint(int row, int column) {
			return colors[column % colors.length];
		}
	}

[quote=geidivan]Pessoal, fiz o seguinte:

CategoryItemRenderer renderer = plot.getRenderer();
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
renderer.setBaseItemLabelFont(fonte);
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0));
chart.getCategoryPlot().setRenderer(renderer);

O que há de errado. Não estão aparecendo os rótulos ainda.[/quote]

JFreeChart grafico = ChartFactory.createLineChart("", "Intervalo de Horas", "Acessos", dataset, PlotOrientation.VERTICAL, true, false, false); CategoryPlot plot = (CategoryPlot) grafico.getPlot(); LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesVisible(true); renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); /*ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0.0); renderer.setBasePositiveItemLabelPosition(p);*/ BufferedImage bufferedGrafico = grafico.createBufferedImage(500, 350);

a minha fico assim e ta funcionando…

espero q te ajude.

abraços.

[quote=Fernando Generoso da Rosa]adaptem esse trecho de código:

renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(false);
ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.CENTER,
TextAnchor.CENTER, TextAnchor.CENTER, 0.0);
renderer.setBasePositiveItemLabelPosition(p);

renderer é um CategoryItemRenderer…[/quote]

Fernando.

Presciso de mais uma ajuda.

O código que vc forneceu funcionou perfeitamente.
Mas devido ao pontos serme mto próximos e os valores muito grande, eles ficaram um por cima do outro.
Já tentei organiza para que isso não ocorresse, porém sem sucesso.

existe alguma forma de fazer isso automaticamente???
desde já agradecido.

Cara, ainda não apareceu. O meu gráfico é de barras.


            CategoryPlot plot = chart.getCategoryPlot();
            
            // Define rótulos das categorias
            BarRenderer renderer = (BarRenderer) plot.getRenderer();            
            renderer.setBaseSeriesVisible(true);  
            renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());               
            renderer.setBaseItemLabelsVisible(true);  
            
            chart.getCategoryPlot().setRenderer(renderer);

alepenchel, tenta isso:

ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.INSIDE12,
		        TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT,
		        -Math.PI / 2.0);
		renderer.setBasePositiveItemLabelPosition(p);

		ItemLabelPosition p2 = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12,
		        TextAnchor.CENTER_LEFT, TextAnchor.CENTER_LEFT, -Math.PI / 2.0);
		renderer.setPositiveItemLabelPositionFallback(p2);

Fernando

geidivan,

faz o seguinte: Cria um datset ficticio (nao sei se tu já está utilizando), utiliza o trecho de código que passei e ve se funciona. Se não funcionar, cola tua classe aqui para darmos uma olhada e tentar ver o que está acontecendo.

Fernando

FIIINOOO!

Valeu Fernando, você conhece viu. Finalmente consegui.

Agora, abusando mais um pouco, você sabe qual desses ItemLabelAnchor.OUTSIDE deixa o valor do lado de fora no canto superior sem ficar por cima da barra?

Obrigado cara, ajudou demais.

Cara,

Tentativa e erro :wink:

vai testando até achar o que melhor se adequa a tua necessidade…blz?

Ok. Não vou te perturbar mais.

Obrigado.

[RESOLVED]

hehehehe,

não é perturbar, mas é que a resposta não tenho assim de bate-pronto. Também terei que testar pra achar os valores ideais, sacou ??

Fernando

geidivan,

Ve se é isso:

ItemLabelPosition p = new ItemLabelPosition(ItemLabelAnchor.INSIDE1,
		        TextAnchor.CENTER_RIGHT, TextAnchor.CENTER_RIGHT,
		        -Math.PI / 2.0);
		renderer.setBasePositiveItemLabelPosition(p);

Pensei que fosse esse também, mas ele pega um pedaço da barra ainda. Mas tá bom cara, esse aí vai servir. Firulas ficam pra depois. rsrs.

Agora tô apanhando é na inclinação do PieChart. Não consigo mudar a inclinação da pizza.

falow.