最近、データ分析の結果をユーザーに直感的に表示する必要があるので、この機能を実現するには、いくつかのサードパーティ パッケージが必要です。
1.jfreechart-1.0.13.jar
2.jcommon-1.0.16.jar
3.gnujaxp.jar
最終的なレンダリングを見てみましょう。
主に jfreechart-1.0.13.jar ですが、これら 3 つのパッケージが完成している必要があります。jfreechart に関連するすべての jar パッケージを、この記事のサンプルのプロジェクト (コード) とともに圧縮してアップロードしました。興味のある学生はそれをダウンロードできます。
ダウンロードアドレス: http://download.csdn.net/detail/pzhtpf/4327700
次に、このプログラムを段階的に実装していきます。
1. 事前準備作業では、これら 3 つのサードパーティ パッケージをこの記事のプロジェクトに追加します。追加プロセスは非常に簡単です。Java を使用して Excel テーブルのデータを読み取る方法については、以前ブログに書きました。 http://blog.csdn.net/pzhtpf/article/details/7506135 を参照してください)。追加プロセスはまったく同じです。
1. Java プロジェクトを作成し、このプロジェクト内に新しいフォルダー lib を作成します。
2. 上記の 3 つの jar パッケージを lib にコピーします。
3. 次に、Java プロジェクトを右クリックし、「プロパティ」を選択します。
4. 左側のリストで「Java Build Path」を選択し、右側のリストで「Libraries」を選択します。
5. 「JAR の追加」をクリックします。
6. 次に、このプロジェクトの lib フォルダーにある 3 つの jar を選択し、「OK」をクリックします。
成功すると、プロジェクトに追加のフォルダーが作成されます: Referenced Libraries
2. 縦棒グラフを実装する Java コード:
インポート java.awt.Font; インポート org.jfree.chart.ChartPanel; インポート org.jfree.chart.axis.CategoryAxis; chart.axis.ValueAxis インポート org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; インポート org.jfree.data.category.DefaultCategoryDataset; パブリック クラス BarChart { ; JFreeChart チャート = ChartFactory.createBarChart3D( "Fruit", // チャート タイトル "Fruit Type", // カタログ軸の表示ラベル "Quantity", // 数値軸データセットの表示ラベル, // データ セット PlotOrientation.VERTICAL, // チャートの方向: 水平、垂直 true , // 凡例を表示するかどうか (単純な棒グラフの場合は false である必要があります) false, // ツールを生成するかどうか false // URL リンクを生成するかどうか) // ここから categoryPlot を開始します。 Lot=chart.getCategoryPlot(); //チャートエリアオブジェクトCategoryAxisを取得domainAxis=plot.getDomainAxis(); //水平下部リストdomainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));水平下部タイトルdomainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //垂直タイトル ValueAxis rangeAxis=plot.getRangeAxis(); //列形式の rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); 、Font.BOLD、15)); chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//タイトルのフォントを設定します//コードはこれで終わりですが、目的はただ一つ、漢字文字化け問題を解決することですframe1。 =new ChartPanel(chart,true); //chartFrame もここで使用でき、独立したフレームを直接生成できます } private static categoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "北京", "アップル"); dataset.addValue(100, "広州", "アップル"); , "北京", "梨"); dataset.addValue(200, "上海", "梨"); "梨"); dataset.addValue(300, "北京", "ブドウ"); dataset.addValue(300, "広州", "ブドウ"); dataset.addValue(400, "北京", "バナナ"); dataset.addValue(400, "上海", "バナナ"); "バナナ"); dataset.addValue(500, "北京", "ライチ"); dataset.addValue(500, "広州", "ライチ");データセットを返す; } public ChartPanel getChartPanel(){ フレーム 1 を返す } }レンダリングは次のとおりです。
ただし、プライベートの静的 categoryDataset getDataSet(){} メソッドのデータを変更すると、たとえば次のように変更されます。
private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(200, "Pear", "Pear"); , "ブドウ", "ブドウ"); dataset.addValue(400, "バナナ", "バナナ"); dataset.addValue(500, "ライチ", "ライチ");レンダリングは次のとおりです。
円グラフを実装するための 3 つの Java コード:
パッケージ com.njue.testJFreeChart; インポート java.text.DecimalFormat; インポート org.jfree.chart; .ChartPanel; インポート org.jfree.chart.JFreeChart; org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.DefaultPieDataset; public class PieChart { ChartPanel Frame1{ DefaultPieDataset data = getDataSet() ; JFreeChart チャート = ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //PiePlot の割合を設定します。 pieplot = (PiePlot) chart.getPlot(); //GetPlot("0.00%"); DecimalFormat オブジェクト。主に 10 進数の問題を設定します。 NumberFormat nf = NumberFormat.getNumberInstance();//NumberFormat オブジェクトを取得 StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//StandardPieSectionLabelGenerator オブジェクトを取得します Pieplot.setLabelGenerator(sp1);//円グラフの表示パーセンテージを設定します //データがない場合に表示される内容 Pieplot.setNoDataMessage("データが表示されません"); ); パイプロット .setLabelGap(0.02D); Pieplot.setIgnoreNullValues(true);//NULL 値を表示しないように設定します Pieplot.setIgnoreZeroValues(true);// 負の値を表示しないように設定します Frame1=new ChartPanel (chart,true); setFont(new Font(" Songdynasty",Font.BOLD,20));//タイトルのフォントを設定 PiePlot piePlot= (PiePlot) chart.getPlot();//グラフ領域オブジェクトを取得する piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//文字化けを解決 chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } private static DefaultPieDataset getDataSet() { DefaultPieDataset データセット = new DefaultPieDataset(); dataset.setValue("リンゴ",100); dataset.setValue("ブドウ",300); " ",500); データセットを返します。レンダリングは次のとおりです。
4. 折れ線グラフを実装する Java コード:
パッケージ com.njue.testJFreeChart; インポート java.text.SimpleDateFormat; インポート org.jfree.chart.JFreeChart; .jfree.chart.axis.DateAxis; org.jfree.chart.axis.ValueAxis; インポート org.jfree.chart.plot.XYPlot; インポート org.jfree.data.time.TimeSeries; time.TimeSeriesCollection; インポート org.jfree.data.xy.XYDataset; TimeSeriesChart(){ ) jfreechart.getPlot(); DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); Frame1=new ChartPanel(jfreechart,true); dateaxis.setLabelFont(new Font("黑体",Font.BOLD,14); //水平下部タイトル dateaxis.setTickLabelFont(new Font("黑体",Font.BOLD,12)); //垂直タイトル ValueAxis rangeAxis=xyplot.getRangeAxis(); //列状の rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15); jfreechart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//タイトルのフォントを設定します} private static XYDataset createDataset() { //このデータセットは少し量が多いですが、 TimeSeries を理解するのは難しくありません timeseries = new TimeSeries("法律および一般的な欧州インデックス信託", org.jfree.data.time.Month.class); timeseries.add(new Month(2, 2001), 181.80000000000001D); timeseries.add(新しい月(3, 2001), 167.30000000000001D); 167.59999999999999D); timeseries.add(新しい月(6, 2001), 158.80000000000001D)(新しい月(7, 2001), 148.30000000000001D); 153.90000000000001D); timeseries.add(新しい月(9, 2001), 142.69999999999999D); 131.800000000001D); 138.69999999999999D); timeseries.add(新しい月(3, 2002), 137.30000000000001D); 139.80000000000001D); timeseries.add(new Month(6, 2002), 137D); timeseries.add(new Month(7, 2002), 132.80000000000001D); org.jfree.data.time.Month.class); timeseries1.add(新しい月(2, 2001), 129.5999999999999D); timeseries1.add(新しい月(2, 2001)); timeseries1.add(新しい月(3、2001)、123.2D) 月(4、2001)、117.2D);月(5、2001)、124.09999999999999D); timeseries1.add(新しい月(6、2001)、122.59999999999999D); timeseries1.add(新しい月(7、2001) 8、2001)、 116.5D); timeseries1.add(新しい月(9, 2001), 112.7D); timeseries1.add(新しい月(11, 2001), 106.0999999999999D ); timeseries1.add(新しい月(12, 2001), 110.3D); timeseries1.add(新しい月(1, 2002), 111.7D); timeseries1.add(新しい月(3, 2002), 109.59999999999999D);月(4, 2002), 113.2D); timeseries1.add(新しい月(5, 2002), 111.59999999999999D); timeseries1.add(新しい月(2002) 7、2002)、 101.5999999999999D); TimeSeriesCollection timeseriescollection(); timeseriescollection.addSeries(timeseries1); } public ChartPanel getChartPanel();レンダリングは次のとおりです。
主なメソッドを見てみましょう。
import java.awt.GridLayout; import javax.swing.JFrame; public static void main(String args[]){ JFrame Frame=new JFrame("new GridLayout"); ,2,10,10)); Frame.add(new BarChart().getChartPanel()); // 棒グラフを追加します Frame.add(new) BarChart1().getChartPanel()); //縦棒グラフの別の効果を追加しますframe.add(new PieChart().getChartPanel()) //円グラフを追加しますframe.add(new TimeSeriesChart().getChartPanel()); // 折れ線グラフを追加します Frame.setBounds(50, 50, 800, 600); } } 5つのまとめ
上記は実装するための簡単な例です。実際、上記のコードは実際の状況を組み合わせれば簡単に理解できます。実際、JavaWeb ではさらに多くの統計グラフが使用されていることがわかります。