`
雪馨25
  • 浏览: 129348 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

【java】实现柱状图 饼状图

阅读更多

一、前提: 下载增加jar包 : jfreechart-1.0.13.jar , jcommon-1.0.14.jar

二、柱状图:

2.1 效果

2.2 代码

 

public class HistogramJPanel {
	private String title; // 图标题
	private String verticallyTitle;// 纵向坐标显示名称
	private String horizontalTitle;// 横向坐标显示名称
	private List<String> elem = new ArrayList<String>();// 内容初始值 (每个类型显示文字)
	private List<Float> value = new ArrayList<Float>();// 内容初始值(每个类型显示精度)

	public HistogramJPanel(String title, String horizontalTitle,
			String verticallyTitle, List<String> elem, List<Float> value) {
		this.title = title;
		this.horizontalTitle = horizontalTitle;
		this.verticallyTitle = verticallyTitle;
		this.elem = elem;
		this.value = value;
	}

	public HistogramJPanel() {

	}

	private class PanelByHistogram extends DemoPanel implements ChangeListener {
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
		private JScrollBar scroller;
		private SlidingCategoryDataset dataset;// 一种滑动类型(图形)数据设置

		private CategoryDataset createDataset() throws Exception {
			DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();// 缺省类型数据设置

			if (elem.size() == 0) {
				JOptionPane.showMessageDialog(null, "柱状图显示数据不符合要求请重新设置", "",
						JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类 61行)");
			}

			if (elem.size() != value.size()) {
				JOptionPane.showMessageDialog(null, "柱状图显示数据不符合要求请重新设置", "",
						JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类 67行)");
			}
			for (int i = 0; i < elem.size(); i++) {
				defaultcategorydataset.addValue(value.get(i),"PanelByHistogram", elem.get(i));
			}

			return defaultcategorydataset;
		}

		private JFreeChart createChart(CategoryDataset categorydataset)
				throws Exception {
			if ((verticallyTitle == null || verticallyTitle.trim().length() == 0)) {
				JOptionPane.showMessageDialog(null, "纵向坐标显示中文?", "",JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类  81行)");
			}
			if ((horizontalTitle == null || horizontalTitle.trim().length() == 0)) {
				JOptionPane.showMessageDialog(null, "横向坐标显示中文?", "",	JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类   85行)");
			}

			JFreeChart jfreechart = ChartFactory.createBarChart(title,
					horizontalTitle, verticallyTitle, categorydataset,
					PlotOrientation.VERTICAL, false, true, false);

			TextTitle t = jfreechart.getTitle();
			t.setFont(new Font("宋体", Font.BOLD, 30));// 标题文字

			CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot();
		//	categoryplot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
			//categoryplot.setRangePannable(true);
			
			CategoryAxis categoryaxis = categoryplot.getDomainAxis();// X轴
			categoryaxis.setMaximumCategoryLabelWidthRatio(0.8F);
			categoryaxis.setLowerMargin(0.02D);
			categoryaxis.setUpperMargin(0.02D);
			categoryaxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// x轴标题文字
			categoryaxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// x轴坐标上文字

			NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();// Y轴
			numberaxis.setLabelFont(new Font("宋体", Font.BOLD, 20));// x轴标题文字
			numberaxis.setTickLabelFont(new Font("黑体", Font.BOLD, 10));// x轴坐标上文字
			numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
			//numberaxis.setRange(0.0D, 100D);

			BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
			barrenderer.setDrawBarOutline(false);
			
			barrenderer.setItemLabelAnchorOffset(11D);
			barrenderer.setBaseItemLabelsVisible(true);
		    barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
			//barrenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator("{0}, {1}) = {2} per 100,000", new DecimalFormat("0")));
		
			
			
			GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F,Color.blue, 0.0F, 0.0F, new Color(0, 0, 64));
			barrenderer.setSeriesPaint(0, gradientpaint);
			return jfreechart;
		}

		public void stateChanged(ChangeEvent changeevent) {
			dataset.setFirstCategoryIndex(scroller.getValue());
		}

		private PanelByHistogram() throws Exception {
			super(new BorderLayout());
			dataset = new SlidingCategoryDataset(createDataset(), 0, elem.size());
			JFreeChart jfreechart = createChart(dataset);
			addChart(jfreechart);
			ChartPanel chartpanel = new ChartPanel(jfreechart);
////			chartpanel.setPreferredSize(new Dimension(800, 600));
//			scroller = new JScrollBar(0, 0, elem.size(), 0, elem.size());
			add(chartpanel);
//			scroller.getModel().addChangeListener(this);
//			JPanel jpanel = new JPanel(new BorderLayout());
//			jpanel.add(scroller);
//			jpanel.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
//			jpanel.setBackground(Color.white);
//			add(jpanel, "South");
		}

	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getVerticallyTitle() {
		return verticallyTitle;
	}

	public void setVerticallyTitle(String verticallyTitle) {
		this.verticallyTitle = verticallyTitle;
	}

	public String getHorizontalTitle() {
		return horizontalTitle;
	}

	public void setHorizontalTitle(String horizontalTitle) {
		this.horizontalTitle = horizontalTitle;
	}

	public List<String> getElem() {
		return elem;
	}

	public void setElem(List<String> elem) {
		this.elem = elem;
	}

	public List<Float> getValue() {
		return value;
	}

	public void setValue(List<Float> value) {
		this.value = value;
	}

	public JPanel createHistogramPanel() throws Exception {
		return new PanelByHistogram();
	}
}

2.3 调用方式

 

 

HistogramJPanel histogramJPanel = new HistogramJPanel();// 柱状图的panel
histogramJPanel.setTitle("柱状图");
histogramJPanel.setHorizontalTitle("序号");
histogramJPanel.setVerticallyTitle("数据量");
histogramJPanel.setElem(elem);
histogramJPanel.setValue(value);
view.jScrollPane.setViewportView(histogramJPanel.createHistogramPanel());
view.jScrollPane .updateUI();

三、饼状图

3.1 效果

3.2 代码

 

import java.awt.BorderLayout;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;
import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

public class PieChartJPanel {
	private String title;
	private List<String> elem = new ArrayList<String>();// 内容初始值 (每个类型显示文字)
	private List<Float> value = new ArrayList<Float>();// 内容初始值(每个类型显示精度)
	public PieChartJPanel(){
		
	}

	
	public PieChartJPanel(String  title,List<String> elem,List<Float> value){
	  this.title=title;
	  this.elem=elem;
	  this.value=value;
	}

	
	private class PieChart extends JPanel{
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;


		private  PieDataset createDataset()throws Exception{
			if (elem.size() == 0) {
				JOptionPane.showMessageDialog(null, "柱状图显示数据不符合要求请重新设置", "",
						JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类 61行)");
			}

			if (elem.size() != value.size()) {
				JOptionPane.showMessageDialog(null, "柱状图显示数据不符合要求请重新设置", "",
						JOptionPane.INFORMATION_MESSAGE);
				throw new Exception("柱状图显示数据不符合要求请重新设置(PanelByHistogram 类 67行)");
			}
			
			DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
			for (int i = 0; i < elem.size(); i++) {
				defaultpiedataset.setValue(elem.get(i), value.get(i));
			}

			return defaultpiedataset;
		}

		private  JFreeChart createChart(PieDataset piedataset){
		
			JFreeChart jfreechart = ChartFactory.createPieChart(title, piedataset, true, true, false);
			TextTitle t = jfreechart.getTitle();
			t.setFont(new Font("宋体", Font.BOLD, 30));// 标题文字

		//	TextTitle texttitle = jfreechart.getTitle();
		//	texttitle.setToolTipText("A title tooltip!");
			PiePlot pieplot = (PiePlot)jfreechart.getPlot();
			pieplot.setLabelFont(new Font("宋体", 0, 12));
			pieplot.setNoDataMessage("No data available");
			pieplot.setCircular(false);
			pieplot.setLabelGap(0.02D);
			jfreechart.getLegend().setItemFont(new Font("宋体", 0,10));
			return jfreechart;
		}

		
		private PieChart()throws Exception{
			super(new BorderLayout());
			JFreeChart jfreechart=createChart(createDataset());
			ChartPanel chartpanel = new ChartPanel(jfreechart);
//			chartpanel.setPreferredSize(new Dimension(600, 400));
			add(chartpanel);
		}
		
	}
	
	public  JPanel createPieChartPanel() throws Exception{
		return new PieChart();
	}
	
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public List<String> getElem() {
		return elem;
	}
	public void setElem(List<String> elem) {
		this.elem = elem;
	}
	public List<Float> getValue() {
		return value;
	}
	public void setValue(List<Float> value) {
		this.value = value;
	}
}

3.3 调用方式

PieChartJPanel PieChart = new PieChartJPanel();// 饼状图panel
PieChart.setTitle("饼状图");
PieChart.setElem(elem);
PieChart.setValue(value);
view.jScrollPane.setViewportView(PieChart.createPieChartPanel());
view.jScrollPane .updateUI();

 

 

 

分享到:
评论

相关推荐

    java实现柱状图

    Java 实现柱状图是指使用 Java 语言创建柱状图、饼状图、曲线图等图形的一种技术。通过使用 JFreeChart 库,可以轻松地创建各种类型的图形。下面将对 Java 实现柱状图的相关知识点进行详细介绍。 1. JFreeChart 库 ...

    java实现图表,饼状图,柱状图,折线图,

    java实现的 生成饼状图 生成单组柱状图 生成多组柱状图 生成堆积柱状图 生成折线图 里面包括了所需要的 jcommon-1.0.12.jar jfreechart-1.0.8a.jar

    java 实现饼状图、柱状图、折线图

    在Java编程语言中,生成数据可视化图形,如饼状图、柱状图和折线图,是数据分析和展示的关键步骤。这些图表可以帮助我们直观地理解数据分布和趋势。本篇文章将详细探讨如何使用Java实现这三种图表。 首先,饼状图...

    java制作jfreechart柱状图 饼状图 折线图

    Java中的JFreeChart库是一个强大的工具,用于生成各种类型的图表,包括柱状图、饼状图和折线图。在本教程中,我们将深入探讨如何使用JFreeChart创建这些图表,以及如何用随机生成的数据作为数据源。 首先,...

    android实现柱状图,饼状图,曲线图

    本文将深入探讨如何使用开源框架AChartEngine在Android平台上实现柱状图、饼状图和曲线图的绘制,以创建直观且吸引人的数据展示。 首先,我们要了解AChartEngine库。AChartEngine是一个强大的图形库,为Android应用...

    JFreeChart编写柱状图和饼状图及3D饼状图方法

    总的来说,JFreeChart是Java开发中实现数据可视化的强大工具,无论是简单的柱状图、饼状图,还是更具立体感的3D饼状图,都可以通过其提供的API轻松实现。通过熟练掌握JFreeChart的使用,开发者可以更好地将复杂的...

    柱状图 饼状图应用

    总的来说,柱状图和饼状图是数据可视化的基础工具,Java提供了多种库来支持它们的创建。通过与数据库的交互,我们可以根据实际数据动态生成图表,帮助用户更好地理解和分析数据。在实际开发中,选择合适的库、优化...

    highcharts 下钻 多个series 三级 四级 多级 多种图例 柱状图 饼状图 折线图

    解决highcharts多级下钻问题,下钻过程中使用了多种图例,...c#,java使用方法一样,demo中使用c#方法实现 vs打开直接可以运行无需连接数据库 大数据可使用异步下钻http://download.csdn.net/detail/ioricnn/9760509

    柱状图 折线图 饼状图

    根据提供的文件信息,本文将详细解析如何使用Java代码实现柱状图、折线图与饼状图,并且针对每一个图表的实现过程进行深入探讨。在实际应用中,这些图表经常被用于数据分析、业务报告以及数据可视化展示等领域。 ##...

    java图表 饼状图,柱状图,折线图

    总的来说,Java中实现饼状图、柱状图和折线图的绘制,主要依赖于像JFreeChart这样的第三方库。通过熟练掌握这些库的使用,开发者能够有效地将数据转化为直观且富有洞察力的图表,从而提升数据分析和报告的质量。

    java线形图柱形图饼状图

    在Java编程中,创建线形图、柱形图和饼状图是数据分析和可视化的重要部分。这些图表可以帮助我们直观地理解复杂的数据集,使数据更易于解析和解释。以下将详细探讨如何在Java环境中实现这些图形,特别是针对...

    利用JFreeChart实现Java中饼状图、柱状图等图表并在Jsp中显示

    “利用JFreeChart实现Java中饼状图、柱状图等图表并在Jsp中显示”这个标题表明我们将探讨如何使用JFreeChart库来创建各种类型的图表,如饼状图和柱状图,并且这些图表能够在JavaServer Pages (JSP) 中展示。...

    java-echart.js柱状图、饼状图、折线图

    java-echart.js柱状图、饼状图、折线图 /** * 柱状图 * @param classRoom * @param req * @param resp * @param model * @return */ @RequestMapping(value = "/zhuzhuangtu") public String ...

    report图状报表(柱状图,饼状图,折线图)

    总结来说,柱状图、饼状图和折线图是数据可视化的基本元素,它们在Java编程中通过各种图形库得以实现。掌握这些图表的创建和使用,能够帮助IT专业人士更好地理解和传达复杂的数据信息,从而提升工作效率和决策质量。

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

    js jquery实现柱状图,饼状图,折线图,平面图,立体三维图

    在给定的标题和描述中,我们主要涉及到四种图表类型:柱状图、饼状图、折线图以及立体三维图。这些图表的实现通常依赖于第三方库,如Chart.js、Highcharts、D3.js或jQuery UI等。在这里,我们将探讨如何使用jQuery来...

    java图表,柱状图,饼状图,折线图

    在Java编程领域,创建可视化数据图表是至关重要的,它能够帮助开发者和用户直观地理解复杂的数据。...通过学习和实践以上知识点,你将能够熟练地在Java项目中创建和使用柱状图、饼状图和折线图,提升数据可视化的能力。

    poi导出多数据柱状图图表到ppt

    在提供的 `multi-bar` 示例中,可能包含了用于演示如何创建多数据柱状图的 Java 代码示例、模板文件以及数据类。这些资源可以帮助开发者更好地理解如何实际操作和应用上述步骤。 总的来说,使用 Apache POI,你可以...

    jsp 输出 饼状图 柱状图

    本篇文章将深入探讨如何使用JavaServer Pages (JSP)来生成饼状图和柱状图,这两种是最常见的数据可视化图表。 首先,我们要了解JSP的基础。JSP是一种动态网页技术,它允许我们在HTML页面中嵌入Java代码,从而实现...

    Android曲线图、柱状图、饼状图

    曲线图、柱状图和饼状图是最常见的图表类型,它们能够清晰、直观地传达大量信息。在这个Eclipse项目中,包含了实现这些图表功能的示例(demo)和jar包,开发者可以根据自己的项目需求进行相应的修改,以满足特定的...

Global site tag (gtag.js) - Google Analytics