一. 饼形图
导入两个包: 和
import
java.awt.Color;
import
java.awt.Font;
import
java.util.ArrayList;
import
java.util.List;
import
javax.swing.JFrame;
import
javax.swing.JPanel;
import
org.jfree.chart.ChartFactory;
import
org.jfree.chart.ChartPanel;
import
org.jfree.chart.JFreeChart;
import
org.jfree.chart.block.BlockContainer;
import
org.jfree.chart.block.BorderArrangement;
import
org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import
org.jfree.chart.plot.PiePlot;
import
org.jfree.chart.title.LegendTitle;
import
org.jfree.data.general.DefaultPieDataset;
import
org.jfree.data.general.PieDataset;
import
org.jfree.ui.HorizontalAlignment;
import
org.jfree.ui.RectangleEdge;
import
org.jfree.ui.RefineryUtilities;
import
org.jfree.util.Rotation;
public
class
JFreeChartDemo
{
public
PieDataset
createDataSet(List<Integer> data, List<String> datadescription)
{
if
(data !=
null
&&
datadescription != null
)
if
(data.size()
== datadescription.size()) {
final
DefaultPieDataset
dataset = new
DefaultPieDataset();
for
(
int
i = 0; i <
data.size(); i++)
dataset.setValue(datadescription.get(i),
data.get(i));
return
dataset;
}
return
null
;
}
public
JFreeChart
createChart(PieDataset pieDataset, List<String> pieKeys) {
JFreeChart jfreeChart = ChartFactory.createPieChart(
"
饼形图 " , //
大标题
pieDataset,
false
,
//
不显示图例
false
,
false
);
jfreeChart.setBackgroundPaint(Color. white
);
//
设置背景色
,如图中的白色背景
jfreeChart.setBorderVisible( true
);
//
设置显示边框,如图中的黑色边框
final
PiePlot
piePlot = (PiePlot) jfreeChart.getPlot();
piePlot.setLegendLabelGenerator( new
StandardPieSectionLabelGenerator(
"{0}({1}
次 )"
));
//
设置标签显示数值,
{1}
为数值, {2}
为百分比
piePlot.setBackgroundPaint( new
Color(229,
246, 250)); //
图片背景色
piePlot.setShadowPaint(Color. gray
);
//
设置图的阴影颜色
piePlot.setLabelFont( new
Font(
"SansSerif"
,
Font. PLAIN
,
12)); //
设置标识每块的字体和大小
piePlot.setNoDataMessage( "No data
available" );
//
没有数据时显示这句话
piePlot.setLabelGenerator( new
StandardPieSectionLabelGenerator(
"{0}
({1} 次 )"
));
//
显示每块的数据值
piePlot.setCircular( true
);
//
设置饼为正圆型, false
为椭圆
piePlot.setLabelLinksVisible( true
);
//
设置显示每块的饼和数据之间的线
piePlot.setLabelBackgroundPaint( new
Color(229,
246, 50)); //
设置标签的背景色,如图的黄色部分
piePlot.setLabelOutlinePaint( new
Color(229, 46,
250)); //
设置标签的边框颜色,如图中的红色边框
//
piePlot.setLabelLinkStyle(PieLabelLinkStyle.CUBIC_CURVE);
piePlot.setLabelShadowPaint( new
Color(229, 46,
0)); //
设置标签的背景色,如图中的红色阴影部分
piePlot.setMaximumLabelWidth(0.25D); //
设置标签的最长宽度
piePlot.setLabelLinkMargin(0.05D); //
设置分类标签与图的连接线边距
piePlot.setIgnoreZeroValues( true
);
//
忽略无值的分类
piePlot.setOutlinePaint( new
Color(29, 46,
250)); //
设置饼图的边框,如图中的蓝色边框
piePlot.setLabelGap(0.00D); //
设置饼与边框的距离
jfreeChart.getTitle().setFont( new
Font(
"SansSerif"
,
Font. BOLD
,
16)); //
设置标题的字体
//
jfreeChart.getLegend().setItemFont(
//
new Font("SansSerif", Font.PLAIN, 12));
//
设置分饼颜色
piePlot.setSectionPaint(pieKeys.get(0), new
Color(254, 0,
2));
piePlot.setSectionPaint(pieKeys.get(1), new
Color(245,
250, 25));
piePlot.setSectionPaint(pieKeys.get(2), new
Color(0, 0,
254));
piePlot.setSectionPaint(pieKeys.get(3), new
Color(254, 0,
153));
piePlot.setSectionPaint(pieKeys.get(4), new
Color(155, 2,
253));
piePlot.setSectionPaint(pieKeys.get(5), new
Color(3, 254,
143));
piePlot.setSectionPaint(pieKeys.get(6), new
Color(159,
253, 5));
piePlot.setSectionPaint(pieKeys.get(7), new
Color(0, 254,
0));
piePlot.setSectionPaint(pieKeys.get(8), new
Color(0, 254,
254));
piePlot.setSectionPaint(pieKeys.get(9), new
Color(255, 1,
255));
//piePlot.setDepthFactor(0.16d);
piePlot.setStartAngle(45);
piePlot.setDirection(Rotation. CLOCKWISE
);
piePlot.setForegroundAlpha(0.5f);
//
设置图的透明度
//
指定饼图轮廓线的颜色
piePlot.setBaseSectionOutlinePaint(Color. RED
);
piePlot.setBaseSectionPaint(Color. RED
);
//
将图例显示在图片的右边
LegendTitle legend = new
LegendTitle(piePlot);
BlockContainer wrapper = new
BlockContainer(
new
BorderArrangement());
legend.setBackgroundPaint(Color. gray
);
//
设置图例的背景色,如图中灰色部分
BlockContainer items = legend.getItemContainer();
items.setPadding(2, 10, 5, 2);
wrapper.add(items);
legend.setWrapper(wrapper);
legend.setPosition(RectangleEdge. RIGHT
);
//
将图例显示在图片的右边
legend.setHorizontalAlignment(HorizontalAlignment. LEFT
);
jfreeChart.addSubtitle(legend);
return
jfreeChart;
}
public
static
void
main(String[]
args) {
final
List<Integer>
data = new
ArrayList<Integer>();
final
List<String>
keys = new
ArrayList<String>();
for
(
int
i=0; i<10;
i++) {
data.add((( int
)Math.random())*10+i*10);
keys.add(i + " 月 " );
}
JFreeChartDemo demo = new
JFreeChartDemo();
PieDataset dataset = demo.createDataSet(data, keys);
JPanel panel = new
ChartPanel(demo.createChart(dataset,keys));
panel.setPreferredSize( new
java.awt.Dimension(550,
300));
JFrame jframe = new
JFrame();
jframe.setContentPane(panel);
jframe.pack();
RefineryUtilities.centerFrameOnScreen(jframe);
jframe.setVisible( true
);
}
}
相关推荐
JFreeChar 动态曲线图,定时刷新,带节点事件
JFreeChar实现曲线图:lib+DemoJFreeChar实现曲线图:lib+DemoJFreeChar实现曲线图:lib+Demo
jfreechar 实现生成柱状图,饼图,曲线,没有调用正在的数据库数据,用的到的可以看看。
JFreeChar制作饼图和柱状图 需要jcommon-1.0.0-rc1.jar包和jfreechart-1.0.0-rc1.jar包
因为最近要用混合图,网上找了一些资料,研究jfreechar 混合图 折线图+柱形图(在一个图中展示,双Y轴,共用X轴,能适用于大部分功能) 别加上 jfreechar的文档
使用JFreeChar,实现柱状图,饼形图,线性图
jfreechar 动态统计图是我使用 jfreechart中的代码改装而来,共大家学习
JFreeChar 柱图实现,教程,及其源码
JFreeChar生成饼图图片详细JAVA代码,直接导入eclipse即可使用。
jfreechar 雷达图 带刻度jfreechar 雷达图 带刻度jfreechar 雷达图 带刻度jfreechar 雷达图 带刻度
JfreeChar学习资料 JfreeChar学习资料 JfreeChar学习资料
jfreechar各种图的样式...及代码
这个小案例包括了基本的JFreeChar的报表制作,其中有饼图,折线图,然后还包括了连接数据库sqlserver获取数据的方式
jfreeChar 柱状图应用的一个实例,
包含所有的jfreechar画的饼状图、柱状图、曲线图所有代码都是本人自己编写并且能运行出结果的。
java开发的jfreechar插件,jfreechar报表开发工具插件
jfreechar开发中应该如何配置,例子等
jfreechar饼图,超级实用
JfreeChar教程与实例。
运用jfreechar插件在项目开发中针对数据库数据进行统计,将数据信息一统计图的方式显示出来,主要有:柱状图,饼图,线形图...