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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!