Bom dia.
Estou com problema para criar um grafico de Pontos(Bolas), consegui fazer (exemplo em anexo) , porem é não consigo alterar os pontos para trazer apenas Pontos(Bolas) e nas linhas verdes sem os simbolos(bolas).
Obrigado
Wiliam.
O que esta usando para gerar o grafico amigo?
Estou usando o JFreeChart.
Tentei gerar as linhas separada dos Pontos. Segue o codigo.:
public class GraficoBolaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/png");
OutputStream output = response.getOutputStream();
BufferedImage image = null;
HttpSession session = request.getSession();
PainelControle pc = (PainelControle) session.getAttribute("pcSelecionadoTeste");
if(pc !=null){
try {
image = criarGrafico(criarDataSet(pc), pc).createBufferedImage(850, 400);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImageIO.write(image, "png", output);
output.close();
}
}
private JFreeChart criarGrafico(DefaultCategoryDataset dataSet, PainelControle pc) {
JFreeChart chart = ChartFactory.createLineChart("Comparativo - " + pc.getDescIndicador(),
"Cidade", "Medição", dataSet, PlotOrientation.VERTICAL, false, false, false);
configurePlot1(chart.getPlot());
configurePlot(chart.getPlot());
chart.setBorderVisible(true);
chart.setBorderPaint(Color.GRAY);
TextTitle source = new TextTitle("");
source.setFont(new Font("SansSerif", Font.PLAIN, 10));
source.setPosition(RectangleEdge.BOTTOM);
source.setHorizontalAlignment(HorizontalAlignment.RIGHT);
chart.addSubtitle(source);
return chart;
}
private DefaultCategoryDataset criarDataSet(PainelControle pc) throws Exception {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
GraficosDAO graficosDAO = new GraficosDAO();
List<Graficos> lista = graficosDAO.listGrafCompIndi(pc.getIdIndicador(), pc.getPerIndicador());
Iterator<Graficos> iterator = lista.iterator();
while(iterator.hasNext()){
Graficos graficos = iterator.next();
dataSet.addValue(graficos.getDeVerdeIndicador(), "Faixa Superior", graficos.getDescCidade());
dataSet.addValue(graficos.getAteVerdeIndicador(), "Faixa Inferior", graficos.getDescCidade());
dataSet.addValue(graficos.getNotaIndicador(), graficos.getDescCidade(), graficos.getDescCidade());
}
return dataSet;
}
/**
* Configurar linhas internas do gráfico
* */
@SuppressWarnings("deprecation")
public void configurePlot1(Plot p1){
CategoryPlot plot1 = (CategoryPlot) p1;
plot1.getRenderer().setSeriesPaint(0, Color.GREEN);
plot1.getRenderer().setSeriesItemLabelsVisible(1, false);
plot1.getRenderer().setSeriesPaint(1, Color.GREEN);
plot1.getRenderer().setSeriesItemLabelsVisible(2, false);
LineAndShapeRenderer renderer1 = (LineAndShapeRenderer) plot1.getRenderer();
renderer1.setShapesVisible(false);
renderer1.setShapesFilled(false);
renderer1.setDrawOutlines(false);
renderer1.setUseFillPaint(true);
renderer1.setBaseFillPaint(Color.WHITE);
}
@SuppressWarnings("deprecation")
public void configurePlot(Plot p){
CategoryPlot plot = (CategoryPlot) p;
BasicStroke basic = new BasicStroke(15.9f,
BasicStroke.CAP_ROUND, BasicStroke.CAP_ROUND, 15.9f,
new float[] { 15.9f, 15.9f }, 15.9f);
plot.setBackgroundPaint(Color.white); // fundo
plot.setDomainGridlinesVisible(true); // linha vetical
plot.setDomainGridlinePaint(Color.GRAY); //linha vertical
plot.setRangeGridlinePaint(Color.GRAY); // linha horizontal
plot.getRenderer().setSeriesPaint(2, Color.BLACK);
plot.getRenderer().setSeriesItemLabelsVisible(2, true);
plot.getRenderer().setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 22));
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true); // true mostra os pontos
renderer.setShapesFilled(true); //true color fundo dos pontos
renderer.setDrawOutlines(true); // false exclui os pontos
renderer.setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 5));
}
}
é agora alguem que manje de free chart pode ajudar, sua aplicação é web ou desktop?
Ao postar códigos, por favor, siga essas dicas:
http://www.guj.com.br/posts/list/50115.java
Senão fica impossível de ler.
Estou usando a WEB.
Segue o codigo novamente.
[b]**
* Servlet implementation class GraficoBolaServlet
*/
public class GraficoBolaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("image/png");
OutputStream output = response.getOutputStream();
BufferedImage image = null;
HttpSession session = request.getSession();
PainelControle pc = (PainelControle) session.getAttribute("pcSelecionadoTeste");
if(pc !=null){
try {
image = criarGrafico(criarDataSet(pc), pc).createBufferedImage(850, 400);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImageIO.write(image, "png", output);
output.close();
}
}
private JFreeChart criarGrafico(DefaultCategoryDataset dataSet, PainelControle pc) {
JFreeChart chart = ChartFactory.createLineChart("Comparativo - " + pc.getDescIndicador(),
"Cidade", "Medição", dataSet, PlotOrientation.VERTICAL, false, false, false);
configurePlot1(chart.getPlot());
configurePlot(chart.getPlot());
chart.setBorderVisible(true);
chart.setBorderPaint(Color.GRAY);
//chart.addSubtitle(new TextTitle("Subtítulo do gráfico"));
//TextTitle source = new TextTitle("Rodapé: Eu acho que isso aparece no rodapé...");
TextTitle source = new TextTitle("");
source.setFont(new Font("SansSerif", Font.PLAIN, 10));
source.setPosition(RectangleEdge.BOTTOM);
source.setHorizontalAlignment(HorizontalAlignment.RIGHT);
chart.addSubtitle(source);
return chart;
}
private DefaultCategoryDataset criarDataSet(PainelControle pc) throws Exception {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
GraficosDAO graficosDAO = new GraficosDAO();
List<Graficos> lista = graficosDAO.listGrafCompIndi(pc.getIdIndicador(), pc.getPerIndicador());
Iterator<Graficos> iterator = lista.iterator();
while(iterator.hasNext()){
Graficos graficos = iterator.next();
dataSet.addValue(graficos.getDeVerdeIndicador(), "Faixa Superior", graficos.getDescCidade());
dataSet.addValue(graficos.getAteVerdeIndicador(), "Faixa Inferior", graficos.getDescCidade());
dataSet.addValue(graficos.getNotaIndicador(), graficos.getDescCidade(), graficos.getDescCidade());
}
return dataSet;
}
/**
* Configurar linhas internas do gráfico
* */
@SuppressWarnings("deprecation")
public void configurePlot1(Plot p1){
CategoryPlot plot1 = (CategoryPlot) p1;
plot1.getRenderer().setSeriesPaint(0, Color.GREEN);
plot1.getRenderer().setSeriesItemLabelsVisible(1, false);
plot1.getRenderer().setSeriesPaint(1, Color.GREEN);
plot1.getRenderer().setSeriesItemLabelsVisible(2, false);
LineAndShapeRenderer renderer1 = (LineAndShapeRenderer) plot1.getRenderer();
renderer1.setShapesVisible(false);
renderer1.setShapesFilled(false);
renderer1.setDrawOutlines(false);
renderer1.setUseFillPaint(true);
renderer1.setBaseFillPaint(Color.WHITE);
}
@SuppressWarnings("deprecation")
public void configurePlot(Plot p){
CategoryPlot plot = (CategoryPlot) p;
BasicStroke basic = new BasicStroke(15.9f,
BasicStroke.CAP_ROUND, BasicStroke.CAP_ROUND, 15.9f,
new float[] { 15.9f, 15.9f }, 15.9f);
plot.setBackgroundPaint(Color.white); // fundo
plot.setDomainGridlinesVisible(true); // linha vetical
plot.setDomainGridlinePaint(Color.GRAY); //linha vertical
plot.setRangeGridlinePaint(Color.GRAY); // linha horizontal
plot.getRenderer().setSeriesPaint(2, Color.BLACK);
plot.getRenderer().setSeriesItemLabelsVisible(2, true);
plot.getRenderer().setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 22));
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setShapesVisible(true); // true mostra os pontos
renderer.setShapesFilled(true); //true color fundo dos pontos
renderer.setDrawOutlines(true); // false exclui os pontos
renderer.setBaseItemLabelFont(new Font("SansSerif", Font.PLAIN, 5));
}
}
[/b]
quando usei o jfreechart utilizava cewolf para exibir na pagina web, mais seu problema parece que esta mesmo na geração do grafico.
Usei um grafico de linha e deixei a linha em branco, mostrando só os pontos (Simbolos), porem não tenho controle sobre os simbolos cada ponto é um sibolo diferente, queria mudar este sibulos para bolas. Ja pesquisei e não vi nada parecido.