API para Desenhar gráfico 2D em coordenadas polares ( raio / ângulo )
3 respostas
A
andre_teprom
Pessoal,
Estou á procura de alguma referência para esse tipo de apresentação na tela, mas não estou encontrando.
A matemática envolvida não é problema para mim, e por isso não se trata de uma dúvida teórica.
O problema ( na verdade o maior trabalho ) seria desenvolver o Grid para isso, que teria de ser redesenhado á cada atualização do painel.
Alguém poderia passar alguma indicação de um exemplo fácil na Web ?
Cara depende muito se sua aplicação vai ser desktop ou web, se for web eu já fiz algo com inner html para desenhar na página,
se for desktop é tranquilo desenhar no jpanel utilizando dois pontos, se for applet segue a mesma linha do JFrame, como é que você quer fazer?
J
JoaoBluSCBR1 like
Esse é do jFreeChart. Me parece que cobre tudo que você possa querer.
/* -------------------- * PolarChartDemo1.java * -------------------- * (C) Copyright 2005, by Object Refinery Limited. * */importjava.awt.Color;importjava.beans.PropertyChangeListener;importorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartPanel;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.axis.NumberAxis;importorg.jfree.chart.plot.PolarPlot;importorg.jfree.data.xy.XYDataset;importorg.jfree.data.xy.XYSeries;importorg.jfree.data.xy.XYSeriesCollection;importedu.ucla.stat.SOCR.chart.ChartGenerator_JTable;importedu.ucla.stat.SOCR.chart.SuperXYChart;importedu.ucla.stat.SOCR.chart.gui.*;/** * A simple demonstration application showing how to create a polar chart. */publicclassPolarChartDemo1extendsSuperXYChartimplementsPropertyChangeListener{publicvoiddoTest(){JFreeChartchart;ChartGenerator_JTablechartMaker=newChartGenerator_JTable();resetChart();showMessageDialog("PolarChartDemo1 doTest get called!");intno_series=(dataTable.getColumnCount()-2)/2;int[][]pairs=newint[no_series][2];for(inti=0;i<no_series;i++){pairs[i][0]=2*i;//column xpairs[i][1]=2*i+1;//column y}chart=chartMaker.getXYChart("Polar","Polar Chart","X","Y",dataTable,no_series,pairs,"");chartPanel=newChartPanel(chart,false);setChart();}/** * Returns a sample dataset. * * @return The dataset. */protectedXYDatasetcreateDataset(booleanisDemo){if(isDemo){XYSeriesCollectionresult=newXYSeriesCollection();XYSeriess1=newXYSeries("Series 1");s1.add(0.0,2.0);s1.add(90.0,13.0);s1.add(180.0,9.0);s1.add(270.0,8.0);result.addSeries(s1);XYSeriess2=newXYSeries("Series 2");s2.add(90.0,-11.2);s2.add(180.0,21.4);s2.add(250.0,17.3);s2.add(355.0,10.9);result.addSeries(s2);returnresult;}elsereturnsuper.createDataset(false);}/** * Creates a sample chart. * * @param dataset the dataset. * * @return The chart. */protectedJFreeChartcreateChart(XYDatasetdataset){// create the chart...JFreeChartchart=ChartFactory.createPolarChart(chartTitle,dataset,true,false,false);chart.setBackgroundPaint(Color.white);// get a reference to the plot for further customisation...PolarPlotplot=(PolarPlot)chart.getPlot();plot.setBackgroundPaint(Color.lightGray);plot.addCornerTextItem("Corner Item 1");plot.addCornerTextItem("Corner Item 2");plot.setRenderer(newSOCRPolarItemRenderer());//PolarItemRenderer renderer = plot.getRenderer();//renderer.setLegendItemLabelGenerator(new SOCRXYSeriesLabelGenerator());// set the range axis to display integers only...NumberAxisrangeAxis=(NumberAxis)plot.getAxis();rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());setXSummary(dataset);returnchart;}}