JFreeChart-Tracejado-Vertical Labels

Eu tô fazendo um gráfico:

[code]
public class BarChartServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
OutputStream out = response.getOutputStream();
try{
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, “IBM”, “2006”);
dataset.addValue(5.0, “Microsoft”, “2006”);
dataset.addValue(6.0, “GE”, “2006”);
dataset.addValue(7.0, “Lucent”, “2006”);
dataset.addValue(0.0, “Amanco”, “2006”);
dataset.addValue(9.0, “GM”, “2006”);
dataset.addValue(10.0, “Petrobras”, “2006”);
dataset.addValue(11.0, “Shell”, “2006”);
dataset.addValue(13.0, “Intel”, “2006”);
dataset.addValue(9.0, “AMD”, “2006”);
dataset.addValue(9.0, “Merck”, “2006”);
dataset.addValue(3.0, “Nestlé”, “2006”);
dataset.addValue(7.0, “Samsung”, “2006”);
dataset.addValue(11.0, “Toyota”, “2006”);
dataset.addValue(10.0, “Nissan”, “2006”);
dataset.addValue(11.0, “EDS”, “2006”);
dataset.addValue(15.0, “Sony”, “2006”);
dataset.addValue(1.0, “Coca-Cola Co”, “2006”);
dataset.addValue(7.0, “Petrovisa”, “2006”);
dataset.addValue(9.0, “HP”, “2006”);
dataset.addValue(10.0, “Sun”, “2006”);
dataset.addValue(13.0, “Televisa”, “2006”);
dataset.addValue(7.5, “Bombardier”, “2006”);
dataset.addValue(11.0, “Renault”, “2006”);
dataset.addValue(17.0, “FIAT”, “2006”);

JFreeChart chart = ChartFactory.createBarChart("Lucro no ano (em R$ Milhões)",
"Empresas", "Valor Faturado(Comparado a 2005)", dataset, PlotOrientation.VERTICAL,
		true, true, false);
CategoryPlot cp = chart.getCategoryPlot();
 NumberAxis rangeAxis = (NumberAxis) cp.getRangeAxis(); 
 rangeAxis.setUpperMargin(0.15); 
    
 cp.setBackgroundPaint(Color.lightGray); 
 cp.setDomainGridlinePaint(Color.black); 
 cp.setDomainGridlinesVisible(true); 
 cp.setRangeGridlinePaint(Color.white); 
 Marker marker = new ValueMarker(5.0); 
 marker.setLabel("text on the line");
 marker.setLabelFont(new Font("SansSerif", Font.ITALIC, 11));
 marker.setLabelAnchor(RectangleAnchor.LEFT);
 marker.setLabelTextAnchor(TextAnchor.CENTER_LEFT);
 // marker.setStroke(???);
 marker.setPaint(Color.red);  
 cp.addRangeMarker(marker);      

 CategoryItemRenderer renderer = cp.getRenderer(); 
 CategoryItemLabelGenerator generator 
     = new StandardCategoryItemLabelGenerator("{0}", 
             NumberFormat.getInstance()); 
 renderer.setItemLabelGenerator(generator); 
 renderer.setItemLabelFont(new Font("SansSerif", Font.PLAIN, 12)); 
 renderer.setItemLabelsVisible(true); 
 renderer.setPositiveItemLabelPosition(new ItemLabelPosition( 
         ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 
         - Math.PI / 2)); 
 
      response.setContentType("image/jpeg");
      ChartUtilities.writeChartAsJPEG(out, chart,1024,768);

}catch (Exception e) {
System.err.println(e.toString());
}finally {
out.close();
}
}

}[/code]
Mas não estou conseguindo o efeito de linha tracejada cortando o gráfico(é o Marker acima na posição 5.0), só linha cheia.
E também não consigo deixar os nomes das empresas, na posição vertical de baixo de cada barra correspondente. Nessa aí de cima, eu consigo deixar os nomes no meio de cada barra, mas eu quero abaixo delas(mexi em vários parâmtros como OUTLINE,BASELINE e nada).

Putz!Agora que eu vi que nem pûs a resposta para quem precisar!
Aí vai(foi beeem mais fácil do que eu pensava…e eu reescrevendo a API):

Para fazer uma linha tracejada(usando um ValueMarker):

Marker marker = new ValueMarker(position);
marker.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,1.0f, new float[] { 10.0f, 6.0f }, 0.0f));

Para deixar os labels verticais debaixo de cada barra em um vertical barChart:
CategoryAxis domainAxis = cp.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);

onde cp é seu CategoryPlot!
E preste atenção aos seus category labels!!!

Aliás, aproveitando esse tópico sobre JFreeChart, alguém já fez um barChart cuja barra tenha um espaço no meio dela?É que eu tenho um gráfico com valores tipo 10,20,30 e o último é muito grande, tipo 1000 e eu queria um “intervalo” representando a distância entre os valores.Ainda não achei nada na API sobre isso…

Já descobri que para a escala modificada eu necessito implementar um CustomAxis com escala não-linear(só não descobri como…rsrsrs)
Mas para “abrir um espaço” no meio de uma barra tá difícil… eu tentei o
IntervalBarRenderer, mas ele pega toda uma série de barras, e eu só quero a última do meu gráfico(que tem um valor muito grande)!

[quote=Ironlynx]Putz!Agora que eu vi que nem pûs a resposta para quem precisar!
Aí vai(foi beeem mais fácil do que eu pensava…e eu reescrevendo a API):

Para fazer uma linha tracejada(usando um ValueMarker):

Marker marker = new ValueMarker(position);
marker.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,1.0f, new float[] { 10.0f, 6.0f }, 0.0f));

Para deixar os labels verticais debaixo de cada barra em um vertical barChart:
CategoryAxis domainAxis = cp.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);

onde cp é seu CategoryPlot!
E preste atenção aos seus category labels!!![/quote]

Brother, estou fazendo um gráfico de linhas utilizando XYSeries, queria saber qual a serventia do marker.

lkava,
já não mexo no JFreeChart de forma avançada há anos, mas se eu não me engano, ele fazia linhas para salientar uma marcação no fundo do gráfico(ou algo + ou - assim).

Dá uma olhada aqui: