jfreechart小記(雷達圖+折線圖)
原理是jfreechart雷達圖+折線
在設置折現圖像顏色 以及 設置雷達圖像網格數量費解,后來解決。(注釋部分)
由于網上jfreechart的資料太多重復,在細節上還比較模糊。希望看到更多的資料分享 :)
package meigui; import java.awt.Color; import java.awt.Dimension; import java.awt.GradientPaint; import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import javax.swing.JPanel; 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.event.ChartChangeEvent; import org.jfree.chart.event.ChartChangeListener; import org.jfree.chart.plot.PolarPlot; import org.jfree.chart.renderer.DefaultPolarItemRenderer; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RectangleInsets; import org.jfree.ui.RefineryUtilities; public class PolarChartDemo1 extends ApplicationFrame { public PolarChartDemo1(String s) { super(s); JPanel jpanel = createDemoPanel(); jpanel.setPreferredSize(new Dimension(600, 500)); setContentPane(jpanel); } private static XYDataset createDataset() { XYSeriesCollection xyseriescollection = new XYSeriesCollection(); XYSeries xyseries = new XYSeries("Series 1 "); xyseries.add(0.0D, 2D); xyseries.add(90D, 13D); xyseries.add(180D, 9D); xyseries.add(270D, 8D); xyseriescollection.addSeries(xyseries); XYSeries xyseries1 = new XYSeries("Series 2 "); xyseries1.add(90D, -11.199999999999999D); xyseries1.add(180D, 21.399999999999999D); xyseries1.add(250D, 17.300000000000001D); xyseries1.add(355D, 10.9D); xyseriescollection.addSeries(xyseries1); return xyseriescollection; } private static JFreeChart createChart(XYDataset xydataset) { JFreeChart jfreechart = ChartFactory.createPolarChart( "Polar Chart Demo 1 ", xydataset, true, false, false); jfreechart.setBackgroundPaint(Color.white); PolarPlot polarplot = (PolarPlot) jfreechart.getPlot(); polarplot.setBackgroundPaint(Color.lightGray); polarplot.addCornerTextItem("Corner Item 1 "); polarplot.addCornerTextItem("Corner Item 2 "); polarplot.setBackgroundImageAlignment(PolarPlot.MINIMUM_HEIGHT_TO_DRAW); polarplot.setAngleTickUnit(new NumberTickUnit(45)); // polarplot.setAngleGridlinesVisible(false); // 設置雷達顏色 GradientPaint gradientpaint3 = new GradientPaint(0.0F, 0.0F, Color.black, 0.0F, 0.0F, Color.black); polarplot.setRadiusGridlinePaint(gradientpaint3);// // 兩個四邊形顏色 GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F, Color.red, 0.0F, 0.0F, Color.red); // GradientPaint gradientpaint2 = new GradientPaint(0.0F, 0.0F, Color.blue, 0.0F, 0.0F, Color.blue); // ???? // 設置兩個四邊形顏色 DefaultPolarItemRenderer renderer = new DefaultPolarItemRenderer(); renderer.setSeriesPaint(0, gradientpaint1); renderer.setSeriesPaint(1, gradientpaint2); polarplot.setRenderer(renderer); NumberAxis numberaxis = (NumberAxis) polarplot.getAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); numberaxis.setAutoRange(true); numberaxis.setVisible(false); numberaxis.setTickUnit(new NumberTickUnit(2));// 設置雷達網格數量 return jfreechart; } public static JPanel createDemoPanel() { final JFreeChart jfreechart = createChart(createDataset()); ChartPanel chartpanel = new ChartPanel(jfreechart); // chartpanel.setMouseZoomable(true);// 是否可以鼠標放大 //通過鼠標滾輪放大縮小放大,整體都放大縮小,尋找更好方法ing chartpanel.addMouseWheelListener(new MouseWheelListener() { public void mouseWheelMoved(MouseWheelEvent e) { if (-3 == e.getUnitsToScroll()) { jfreechart.setPadding(new RectangleInsets(jfreechart .getPadding().getTop() - 10, jfreechart .getPadding().getBottom() - 10, jfreechart .getPadding().getLeft() - 10, jfreechart .getPadding().getRight() - 10)); System.out.println("向上"); } else if (3 == e.getUnitsToScroll()){ jfreechart.setPadding(new RectangleInsets(jfreechart .getPadding().getTop() + 10, jfreechart .getPadding().getBottom() + 10, jfreechart .getPadding().getLeft() + 10, jfreechart .getPadding().getRight() + 10)); System.out.println("向下"); } } }); return chartpanel; } public static void main(String args[]) { PolarChartDemo1 polarchartdemo1 = new PolarChartDemo1( "Polar Chart Demo "); polarchartdemo1.pack(); RefineryUtilities.centerFrameOnScreen(polarchartdemo1); polarchartdemo1.setVisible(true); } }

//放大部分另一種寫法 - -
chartpanel.addMouseWheelListener(new MouseWheelListener() { public void mouseWheelMoved(MouseWheelEvent e) { if (-3 == e.getUnitsToScroll()) { chartpanel.zoomInBoth(10, 10); System.out.println("向上"); } else if (3 == e.getUnitsToScroll()) { chartpanel.zoomOutBoth(10, 10); System.out.println("向下"); } } });
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!