Недавно я разрабатываю курс интеллектуального анализа данных. Мне нужно интуитивно отображать результаты анализа данных для пользователей. Для реализации этой функции мне нужно несколько сторонних пакетов:
1.jfreechart-1.0.13.jar
2. jcommon-1.0.16.jar
3. gnujaxp.jar
Давайте посмотрим на окончательный рендеринг:
В основном это jfreechart-1.0.13.jar, но эти три пакета должны быть полными. Я заархивировал и загрузил все jar-пакеты, связанные с jfreechart, вместе с проектом (кодом) примера в этой статье.
Адрес загрузки: http://download.csdn.net/detail/pzhtpf/4327700.
Далее мы поэтапно реализуем эту программу.
1. В ходе предварительной подготовки эти три сторонних пакета добавляются в проект этой статьи. Процесс добавления очень прост. Ранее я писал в блоге о том, как читать данные в таблицах Excel с помощью Java (заинтересованные студенты могут это сделать). Посмотрите: http://blog.csdn.net/pzhtpf/article/details/7506135), вам также необходимо добавить сторонние пакеты. Процесс добавления точно такой же:
1. Создайте проект Java и создайте в этом проекте новую папку lib;
2. Скопируйте три вышеуказанных jar-пакета в lib.
3. Затем щелкните правой кнопкой мыши проект Java и выберите «Свойства».
4. Выберите «Путь сборки Java» в списке слева и «Библиотеки» справа.
5. Нажмите «Добавить JAR-файлы».
6. Затем выберите три банки в папке lib этого проекта и нажмите «ОК».
После успеха в проекте появится дополнительная папка: Referenced Libraries.
2. Код Java для реализации гистограммы:
импортировать java.awt.Font; импорт org.jfree.chart.ChartFactory; импорт org.jfree.chart.JFreeChart; импорт org.jfree.chart.axis.CategoryAxis; диаграмма.ось.ValueAxis; импорт org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; импорт org.jfree.data.category.CategoryDataset; ; диаграмма JFreeChart = ChartFactory.createBarChart3D( "Фрукты", // Название диаграммы "Тип фруктов", // Отображение метки оси каталога "Количество", // Отображение метки набора данных числовой оси, // Набор данных PlotOrientation.VERTICAL, // Направление диаграммы: горизонтальное, вертикальное true , // Отображать ли легенду (должно быть ложным для простой гистограммы) false, // Создавать ли инструменты false // Создавать ли URL-ссылки // Запустить график категорий отсюда); plot=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));chart.getLegend().setItemFont(new Font("黑体" , Font.BOLD, 15)); Font("宋体",Font.BOLD,20));//Установка шрифта заголовка//На этом заканчивается код, но он предназначен только для одной цели: решить проблему искажения китайских символов в кадре1. =new ChartPanel(chart,true); // здесь также можно использоватьchartFrame, который может напрямую генерировать независимый фрейм } Private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, «Пекин», «Apple»); dataset.addValue(100, «Шанхай», «Apple»); dataset.addValue(100, «Гуанчжоу», «Apple»); dataset.addValue(100, «Гуанчжоу», «Apple»); , «Пекин», «Груша»); dataset.addValue(200, «Шанхай», «Груша»); dataset.addValue(200, «Гуанчжоу», "Груша"); dataset.addValue(300, "Пекин", "Виноград"); dataset.addValue(300, "Шанхай", "Виноград"); dataset.addValue(300, "Гуанчжоу", "Виноград"); dataset.addValue(400, «Пекин», «Банан»); dataset.addValue(400, «Шанхай», «Банан»); dataset.addValue(400, «Гуанчжоу», "Банан"); dataset.addValue(500, "Пекин", "Личи"); dataset.addValue(500, "Шанхай", "Личи"); dataset.addValue(500, "Гуанчжоу", "Личи"); вернуть набор данных} Общественная ChartPanel getChartPanel () {вернуть кадр1} }; Визуализации следующие:
Но после того, как мы изменим данные в приватном статическом методе CategoryDataset getDataSet(){}, сформируется другой эффект. Например, мы изменяем его на:
частный статический набор данных CategoryDataSet() {набор данных DefaultCategoryDataset = новый DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple" dataset.addValue(200, "Gear", "Pear" dataset.addValue(300); , "Виноград", "Виноград"); dataset.addValue(400, "Банан", "Банан"); dataset.addValue(500, "Личи", "Личи" вернуть набор данных });Визуализации следующие:
Три Java-кода для реализации круговой диаграммы:
пакет com.njue.testJFreeChart; импорт java.text.DecimalFormat; импорт javax.swing.JPanel; импорт org.jfree.chart.ChartFactory; .ChartPanel импорт org.jfree.chart.JFreeChart импорт; org.jfree.chart.labels.StandardPieSectionLabelGenerator; импорт org.jfree.chart.plot.PiePlot; импорт org.jfree.data.general.DefaultPieDataset; общественный класс PieChart {ChartPanelframe1; public PieChart () { DefaultPieDataset data = getDataSet () ; диаграмма JFreeChart =; ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //Установим процент PiePlot pieplot = (PiePlot)chart.getPlot(); DecimalFormat df = new DecimalFormat("0.00%"); объект DecimalFormat, в основном устанавливающий десятичные проблемы 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);//Устанавливаем не отображать нулевые значения pieplot.setIgnoreZeroValues(true);//Устанавливаем не отображать отрицательные значенияframe1=new ChartPanel (chart,true);chart.getTitle(). setFont(new Font(" Song Dynasty",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 = новый DefaultPieDataset(); dataset.setValue("яблоко",100); dataset.setValue("груша",200); dataset.setValue("виноград",300); dataset.setValue("банан",400); " ", 500); вернуть набор данных; } public ChartPanel getChartPanel () { returnframe1 } } Визуализации следующие:
4. Код Java для реализации линейной диаграммы:
пакет com.njue.testJFreeChart; импорт java.text.SimpleDateFormat; импорт org.jfree.chart.ChartFactory; импорт org.jfree.chart.JFreeChart импорт org; .jfree.chart.axis.DateAxis импорт; org.jfree.chart.axis.ValueAxis; импорт org.jfree.chart.plot.XYPlot; импорт org.jfree.data.time.Month; импорт org.jfree.data.time.TimeSeries; импорт org.jfree.data. time.TimeSeriesCollection импорт org.jfree.data.xy.XYDataset общественный класс TimeSeriesChart {ChartPanel public; 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(); //Получаем столбчатый диапазонAxis.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(new Month(6, 2001), 158.80000000000001D); timeseries.add(new Month(7, 2001), 148.30000000000001D); timeseries.add(new Month(8, 2001), 153.90000000000001D); timeseries.add(новый месяц(9, 2001), 142.69999999999999D); timeseries.add(новый месяц(10, 2001), 123.2D); 131.80000000000001D); timeseries.add(новый месяц(12, 2001), 139.59999999999999D); timeseries.add(новый месяц(1, 2002), 142.90000000000001D); timeseries.add(новый месяц(2, 2002), 138.69999999999999D); timeseries.add(новый месяц(3, 2002), 137.30000000000001D); timeseries.add(новый месяц(4, 2002), 143.90000000000001D); 139.80000000000001D); timeseries.add(new Month(6, 2002), 137D); timeseries.add(new Month(7, 2002), 132.80000000000001D); TimeSeries timeseries1 = new TimeSeries("юридический и общий индекс доверия Великобритании", org.jfree.data.time.Month.class); timeseries1.add(new Month(2, 2001), 129.5999999999999D); timeseries1.add(new Month(3, 2001), 123.2D timeseries1.add(new); timeseries1.add(новый Месяц(3, 2001), 123.2D) Месяц(4, 2001), 117.2D(новый); Месяц(5, 2001), 124.09999999999999D); timeseries1.add(новый Месяц(6, 2001), 122.59999999999999D); 8, 2001 г.), 116.5D); timeseries1.add(новый месяц(9, 2001), 112.7D); timeseries1.add(новый месяц(10, 2001), 101.5D); timeseries1.add(новый месяц(11, 2001), 106.09999999999999D); ); timeseries1.add(новый месяц(12, 2001), 110.3D); timeseries1.add(новый месяц(1, 2002), 111.7D); timeseries1.add(новый месяц(2, 2002), 111D(новый месяц(3, 2002), 109.59999999999999D; timeseries1.add(новый); Месяц(4, 2002), 113.2D; timeseries1.add(новый Месяц(5, 2002), 111.59999999999999D); timeseries1.add(новый Месяц(6, 2002), 108.8D); 7, 2002 г.), 101.59999999999999D TimeSeriesCollection = new TimeSeriesCollection(); timeseriescollection.addSeries(timeseries1);Визуализации следующие:
Давайте посмотрим на основной метод:
import java.awt.GridLayout; import javax.swing.JFrame; public class mainClass { public static void main(String args[]) {JFrameframe=new JFrame("Диаграмма данных Java"); ,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);frame.setVisible(true) }; Пять резюме
Вышеупомянутый пример является простым для реализации. Студенты, которые хотят узнать больше, могут проверить информацию самостоятельно. На самом деле, приведенные выше коды легко понять, если вы объедините свою реальную ситуацию, вы можете разработать свое собственное приложение. Вы можете видеть, что это реализовано в приложении. На самом деле, в JavaWeb используется больше статистических диаграмм. Вы также можете узнать об этом самостоятельно.