第9章 扩展图表技术
9.1 区域图
实例228 基本区域图
public AreaDemo1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
DefaultKeyedValues keyedValues = new DefaultKeyedValues();
keyedValues.addValue("1", 310);
keyedValues.addValue("2", 489);
keyedValues.addValue("3", 512);
keyedValues.addValue("4", 589);
keyedValues.addValue("5", 359);
keyedValues.addValue("6", 402);
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
"java book", keyedValues);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010.1-6 sales volume", // 图表标题
"month", // x轴标签
"sales", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
false, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 创建图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo1 demo = new AreaDemo1("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例229 显示多分类区域图
public AreaDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo2 demo = new AreaDemo2("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例230 设置区域图透明度
public AreaDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
//设置透明度
categoryPlot.setForegroundAlpha(0.5f);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo3 demo = new AreaDemo3("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例231 添加说明文字
public AreaDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setForegroundAlpha(0.5f);
//添加说明文字
TextTitle subtitle = new TextTitle(
"下图显示明日科技公司2010上半年(1-6月份)图书销售情况,根据图表显示情况2010上半年中JAVA图书的销售占比较大的比重,VC和VB相比JAVA图书的销售少了一些。");
chart.addSubtitle(subtitle);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo4 demo = new AreaDemo4("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例232 设置说明文字位置
public AreaDemo5(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setForegroundAlpha(0.5f);
TextTitle subtitle = new TextTitle(
"下图显示明日科技公司2010上半年(1-6月份)图书销售情况,根据图表显示情况2010上半年中JAVA图书的销售占比较大的比重,VC和VB相比JAVA图书的销售少了一些。");
//设置显示位置
subtitle.setPosition(RectangleEdge.LEFT);
subtitle.setPaint(Color.GREEN);
chart.addSubtitle(subtitle);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo5 demo = new AreaDemo5("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例233 区域图X轴显示位置
public AreaDemo6(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
//区域图X轴显示位置
categoryPlot.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo6 demo = new AreaDemo6("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例234 区域图X轴标签角度
public AreaDemo7(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
//区域图X轴标签角度
categoryAxis.setLabelAngle(Math.PI*0.3);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo7 demo = new AreaDemo7("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例235 区域图X轴尺度标签角度
public AreaDemo8(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
//区域图X轴尺度标签角度
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo8 demo = new AreaDemo8("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例236 设置区域颜色
public AreaDemo9(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createAreaChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
//设置透明度
categoryPlot.setForegroundAlpha(0.7f);
AreaRenderer renderer = (AreaRenderer) categoryPlot.getRenderer();
// 设置区域颜色
renderer.setSeriesPaint(0, Color.BLACK);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
AreaDemo9 demo = new AreaDemo9("区域图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.2 气泡图
实例237 基本气泡图
public BubbleDemo1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"page", // x轴标签
"chapter", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo1 demo = new BubbleDemo1("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例238 气泡图X轴标签
public BubbleDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getXYZDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getXYZDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"chapter", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//设置X轴字体
NumberAxis numberAxis = (NumberAxis) plot.getDomainAxis();
numberAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo2 demo = new BubbleDemo2("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例239 气泡图Y轴标签
public BubbleDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getXYZDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getXYZDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴字体
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴字体
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo3 demo = new BubbleDemo3("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例240 设置坐标范围
public BubbleDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getXYZDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getXYZDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
//设置范围
domainAxis.setLowerBound(500);
domainAxis.setUpperBound(900);
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
//设置范围
rangeAxis.setLowerBound(7);
rangeAxis.setUpperBound(19);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo4 demo = new BubbleDemo4("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例241 设置透明度
public BubbleDemo5(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
XYPlot plot = chart.getXYPlot();
//设置透明度
plot.setForegroundAlpha(0.4f);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo5 demo = new BubbleDemo5("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例242 设置气泡颜色
public BubbleDemo6(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
XYPlot plot = chart.getXYPlot();
//设置透明度
plot.setForegroundAlpha(0.8f);
//设置气泡颜色
XYBubbleRenderer renderer =(XYBubbleRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, Color.YELLOW);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo6 demo = new BubbleDemo6("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例243 气泡图X轴标签角度
public BubbleDemo7(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
XYPlot plot = chart.getXYPlot();
//设置透明度
plot.setForegroundAlpha(0.8f);
ValueAxis valueAxis = plot.getDomainAxis();
//气泡图X轴标签角度
valueAxis.setLabelAngle(Math.PI*0.3);
ValueAxis valueAxis1 = plot.getRangeAxis();
//气泡图X轴标签角度
valueAxis1.setLabelAngle(Math.PI*0.3);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo7 demo = new BubbleDemo7("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例244 气泡图X轴尺度标签角度
public BubbleDemo8(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYZDataset getDataset() {
// 系例关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 创建分类数据集
DefaultXYZDataset dataset = new DefaultXYZDataset();
double data1 [] [] = new double[][] {{600}, {10}, {600/(10*10)}};
double data2 [] [] = new double[][] {{650}, {10}, {650/(10*10)}};
double data3 [] [] = new double[][] {{800}, {16}, {800/(16*10)}};
dataset.addSeries(series1, data1);
dataset.addSeries(series2, data2);
dataset.addSeries(series3, data3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYZDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createBubbleChart("2010年上半年销售量", // 图表标题
"页数", // x轴标签
"章数", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
XYPlot plot = chart.getXYPlot();
//X轴
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//Y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
XYPlot plot = chart.getXYPlot();
//设置透明度
plot.setForegroundAlpha(0.8f);
ValueAxis valueAxis = plot.getDomainAxis();
//气泡图X轴尺度标签角度
valueAxis.setVerticalTickLabels(true);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
BubbleDemo8 demo = new BubbleDemo8("气泡图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.3 分步图
实例245 基本分步图
public CategoryStepDemp1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
// 设置分布图渲染
CategoryStepRenderer renderer = new CategoryStepRenderer(true);
// 创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
// 创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
// 生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp1 demo = new CategoryStepDemp1("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例246 加粗分步图
public CategoryStepDemp2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
//创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryStepRenderer renderer = (CategoryStepRenderer) plot.getRenderer();
//加粗分步图
renderer.setSeriesStroke(0,new BasicStroke(5));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp2 demo = new CategoryStepDemp2("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例247 显示虚线效果
public CategoryStepDemp3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
//创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryStepRenderer renderer = (CategoryStepRenderer) plot.getRenderer();
//显示虚线效果
renderer.setSeriesStroke(0,new BasicStroke(5,BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND,1, new float[] {10.0f, 16.0f}, 0.0f));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp3 demo = new CategoryStepDemp3("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例248 设置分步图颜色
public CategoryStepDemp4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
//创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryStepRenderer renderer = (CategoryStepRenderer) plot.getRenderer();
//设置分步图颜色
renderer.setSeriesPaint(0, Color.BLACK);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp4 demo = new CategoryStepDemp4("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例249 隐藏分步图
public CategoryStepDemp5(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
// 设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
// 创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
// 创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
// 生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryStepRenderer renderer = (CategoryStepRenderer) plot
.getRenderer();
// 隐藏分步图
renderer.setSeriesVisible(0, new Boolean(false));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp5 demo = new CategoryStepDemp5("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例250 分步图X轴显示位置
public CategoryStepDemp6(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
// 设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
// 创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
// 创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
// 生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
//分步图X轴显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp6 demo = new CategoryStepDemp6("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例251 分步图X轴标签角度
public CategoryStepDemp7(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
// 设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
// 创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
// 创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
// 生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis categoryAxis = plot.getDomainAxis();
// 分步图X轴标签角度
categoryAxis.setLabelAngle(Math.PI * 0.3);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp7 demo = new CategoryStepDemp7("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例252 分步图X轴尺度标签角度
public CategoryStepDemp8(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
// 设置分布图渲染
CategoryItemRenderer renderer = new CategoryStepRenderer(true);
// 创建X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
// 创建Y轴
ValueAxis rangeAxis = new NumberAxis("销售量(单位:本)");
// 生成图表
CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer);
final JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis categoryAxis = plot.getDomainAxis();
// 区域图X轴尺度标签角度
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CategoryStepDemp8 demo = new CategoryStepDemp8("分步图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.4 联合分类图
实例253 生成线形图与柱形图
public CombinedCategoryDemo1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//生成线形图渲染
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
//生成柱形图渲染
BarRenderer renderer2 = new BarRenderer();
//设置X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//设置Y轴
NumberAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//设置图表
CategoryPlot plot1 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer1);
CategoryPlot plot2 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer2);
//设置联合分类图表
final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(
domainAxis);
plot.add(plot1);
plot.add(plot2);
JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CombinedCategoryDemo1 demo = new CombinedCategoryDemo1("联合分类图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例254 设置图表高度
public CombinedCategoryDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//生成线形图渲染
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
//生成柱形图渲染
BarRenderer renderer2 = new BarRenderer();
//设置X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//设置Y轴
NumberAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//设置图表
CategoryPlot plot1 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer1);
CategoryPlot plot2 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer2);
//设置联合分类图表
final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
//设置图表高度
plot.add(plot1, 1);
plot.add(plot2, 2);
JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CombinedCategoryDemo2 barDemo = new CombinedCategoryDemo2("联合分类图");
barDemo.createPlot();
barDemo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(barDemo);
// 设置可以显示
barDemo.setVisible(true);
}
实例255 设置图表位置
public CombinedCategoryDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//生成线形图渲染
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
//生成柱形图渲染
BarRenderer renderer2 = new BarRenderer();
//设置X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//设置Y轴
NumberAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//设置图表
CategoryPlot plot1 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer1);
CategoryPlot plot2 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer2);
//设置联合分类图表
final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
//设置联合图表
plot.add(plot2, 1);
plot.add(plot1, 1);
JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CombinedCategoryDemo3 barDemo = new CombinedCategoryDemo3("联合分类图");
barDemo.createPlot();
barDemo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(barDemo);
// 设置可以显示
barDemo.setVisible(true);
}
实例256 线形图与分布图
public CombinedCategoryDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
//生成线形图渲染
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
//分步图渲染
CategoryStepRenderer renderer2 = new CategoryStepRenderer();
//设置X轴
CategoryAxis domainAxis = new CategoryAxis("月份");
//设置Y轴
NumberAxis rangeAxis = new NumberAxis("销售量(单位:本)");
//设置图表
CategoryPlot plot1 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer1);
CategoryPlot plot2 = new CategoryPlot(dataset, domainAxis, rangeAxis,
renderer2);
//设置联合分类图表
final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
plot.add(plot1);
plot.add(plot2);
JFreeChart chart = new JFreeChart("2010年上半年销售量", plot);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
CombinedCategoryDemo4 demo = new CombinedCategoryDemo4("联合分类图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.5 双轴图
实例257 基本双轴图
public DualAxisDemo1(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
//线形渲染
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo1 demo = new DualAxisDemo1("双轴图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例258 基本双Y轴图
public DualAxisDemo2(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
//设置双Y轴
final ValueAxis axis2 = new NumberAxis("网购销售量");
//设置Y轴最大值
axis2.setUpperBound(200);
categoryPlot.setRangeAxis(1, axis2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo2 demo = new DualAxisDemo2("双轴图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例259 双Y轴字体
public DualAxisDemo3(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
final ValueAxis axis2 = new NumberAxis("网购销售量");
// y轴字体
axis2.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
axis2.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//设置最大值
axis2.setUpperBound(200);
categoryPlot.setRangeAxis(1, axis2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo3 demo = new DualAxisDemo3("双轴图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例260 3D双轴图
public DualAxisDemo4(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart3D("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
// LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
LineRenderer3D renderer2 = new LineRenderer3D();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
final ValueAxis axis2 = new NumberAxis("网购销售量");
// y轴字体
axis2.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
axis2.setLabelFont(new Font("宋体", Font.PLAIN, 14));
axis2.setUpperBound(200);
categoryPlot.setRangeAxis(1, axis2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo4 demo = new DualAxisDemo4("双轴图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例261 设置双轴图颜色
public DualAxisDemo5(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
//线形渲染
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图颜色
renderer2.setSeriesPaint(0, Color.black);
//设置线形图
categoryPlot.setRenderer(1, renderer2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo5 demo = new DualAxisDemo5("双轴图实例");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例262 双轴图X轴标签角度
public DualAxisDemo6(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
final ValueAxis axis2 = new NumberAxis("网购销售量");
// y轴字体
axis2.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
axis2.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//设置最大值
axis2.setUpperBound(200);
categoryPlot.setRangeAxis(1, axis2);
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
//双轴图X轴标签角度
categoryAxis.setLabelAngle(Math.PI*0.3);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo6 demo = new DualAxisDemo6("双轴图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例263 双轴图X轴尺度标签角度
public DualAxisDemo7(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset1() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
return dataset;
}
private CategoryDataset getCategoryDataset2() {
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset1();
JFreeChart chart = ChartFactory.createBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
categoryPlot.setDataset(1,getCategoryDataset2());
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer();
//设置线形图
categoryPlot.setRenderer(1, renderer2);
final ValueAxis axis2 = new NumberAxis("网购销售量");
// y轴字体
axis2.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
axis2.setLabelFont(new Font("宋体", Font.PLAIN, 14));
//设置最大值
axis2.setUpperBound(200);
categoryPlot.setRangeAxis(1, axis2);
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
//双轴图X轴尺度标签角度
categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
DualAxisDemo7 demo = new DualAxisDemo7("双轴图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.6 折线图
实例264 基本折线图
public LineDemo1(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
DefaultKeyedValues keyedValues = new DefaultKeyedValues();
keyedValues.addValue("1", 310);
keyedValues.addValue("2", 489);
keyedValues.addValue("3", 512);
keyedValues.addValue("4", 589);
keyedValues.addValue("5", 359);
keyedValues.addValue("6", 402);
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
"JAVA图书", keyedValues);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo1 demo = new LineDemo1("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例265 多条折线图
public LineDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 系列关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 分类关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo2 demo = new LineDemo2("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例266 水平折线图
public LineDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 系列关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 分类关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo3 demo = new LineDemo3("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例267 隐藏折线图
public LineDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 系列关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 分类关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
//隐藏指定线形
renderer.setSeriesLinesVisible(0, false);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo4 demo = new LineDemo4("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例268 加粗折线
public LineDemo5(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 系列关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 分类关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
//加粗线形
renderer.setSeriesStroke(0,new BasicStroke(5));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo5 demo = new LineDemo5("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例269 显示折线节点
public LineDemo6(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
//显示节点
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesShapesVisible(1, true);
renderer.setSeriesShapesVisible(2, true);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo6 demo = new LineDemo6("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例270 生成节点图
public LineDemo7(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
//只显示节点
renderer.setSeriesLinesVisible(0, false);
renderer.setSeriesLinesVisible(1, false);
renderer.setSeriesLinesVisible(2, false);
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesShapesVisible(1, true);
renderer.setSeriesShapesVisible(2, true);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo7 demo = new LineDemo7("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例271 设置虚线图
public LineDemo8(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineAndShapeRenderer renderer = (LineAndShapeRenderer) categoryPlot
.getRenderer();
// 虚线
renderer.setSeriesStroke(0, new BasicStroke(5, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND, 1, new float[] { 10.0f, 16.0f }, 0.0f));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo8 demo = new LineDemo8("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例272 设置折线颜色
public LineDemo9(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
LineAndShapeRenderer renderer = (LineAndShapeRenderer) chart.getCategoryPlot().getRenderer();
//设置显示颜色
renderer.setSeriesPaint(0, Color.black);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo9 demo = new LineDemo9("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例273 3D折线图
public LineDemo10(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart3D("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
CategoryPlot categoryPlot = chart.getCategoryPlot();
LineRenderer3D renderer3d = (LineRenderer3D) categoryPlot.getRenderer();
renderer3d.setWallPaint(Color.orange);
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo10 demo = new LineDemo10("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例274 XY折线图
public LineDemo11(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private IntervalXYDataset getDataset() {
final XYSeries series1 = new XYSeries("JAVA图书");
final XYSeries series2 = new XYSeries("VC图书");
final XYSeries series3 = new XYSeries("VB图书");
series1.add(501, 3);
series1.add(200, 2);
series1.add(308, 2);
series1.add(580, 4);
series1.add(418, 2);
series1.add(315, 1);
series2.add(480, 2);
series2.add(381, 3);
series2.add(264, 1);
series2.add(185, 2);
series2.add(209, 2);
series2.add(302, 2);
series3.add(310, 2);
series3.add(489, 2);
series3.add(512, 3);
series3.add(589, 4);
series3.add(359, 2);
series3.add(402, 2);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
IntervalXYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createXYLineChart("2010年上半年图书完成量", // 图表标题
"完成页数", // x轴标签
"人员数量", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot plot = chart.getXYPlot();
NumberAxis domainAxis = (NumberAxis) plot.getDomainAxis();
// X轴字体
domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = plot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo11 demo = new LineDemo11("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例275 排序折线图
public LineDemo12(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
DefaultKeyedValues keyedValues = new DefaultKeyedValues();
keyedValues.addValue("1", 310);
keyedValues.addValue("2", 489);
keyedValues.addValue("3", 512);
keyedValues.addValue("4", 589);
keyedValues.addValue("5", 359);
keyedValues.addValue("6", 402);
//排序
keyedValues.sortByValues(SortOrder.ASCENDING);
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
"JAVA图书", keyedValues);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createLineChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
LineDemo12 demo = new LineDemo12("折线图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.7 环形图
实例276 基本环形图
public RingDeom1(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("java book", 1689);
dataset.setValue("vc book", 810);
dataset.setValue("vb book", 490);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart(
"2010.1-6 sales volume", // 图表标题
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom1 demo = new RingDeom1("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例277 环形图字体
public RingDeom2(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart(
"2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom2 demo = new RingDeom2("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例278 设置环形深度
public RingDeom3(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
RingPlot ringPlot = (RingPlot) chart.getPlot();
//设置环形深度
ringPlot.setSectionDepth(0.7);
updateFont(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom3 demo = new RingDeom3("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例279 分离环形图
public RingDeom4(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
RingPlot plot = (RingPlot) chart.getPlot();
plot.setExplodePercent("JAVA全能速查宝典", 0.1);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
//设置图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom4 demo = new RingDeom4("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例280 椭圆环形图
public RingDeom5(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
RingPlot plot = (RingPlot) chart.getPlot();
plot.setCircular(false);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
//设置图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom5 demo = new RingDeom5("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例281 环形的阴影偏移
public RingDeom6(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
RingPlot plot = (RingPlot) chart.getPlot();
//阴影偏移
plot.setShadowXOffset(20);
plot.setShadowYOffset(20);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
//设置图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom6 demo = new RingDeom6("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例282 环形的简单标签
public RingDeom7(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
RingPlot plot = (RingPlot) chart.getPlot();
//环形的简单标签
plot.setSimpleLabels(true);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
//设置图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom7 demo = new RingDeom7("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例283 环形的旋转角度
public RingDeom8(String title) {
super(title);
}
/**
* 创建一个数据集
*
* @return
*/
private PieDataset getPieDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("JAVA从入门到精通(第2版)", 500);
dataset.setValue("视频学JAVA", 800);
dataset.setValue("JAVA全能速查宝典", 1000);
dataset.setValue("Java范例完全自学手册(1DVD)", 400);
dataset.setValue("Java开发典型模块大全", 750);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
PieDataset dataset = getPieDataset();
JFreeChart chart = ChartFactory.createRingChart("2010上半年销售记录", // 图表标题
dataset, // 数据集
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 图表
RingPlot ringPlot = (RingPlot) chart.getPlot();
ringPlot.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ringPlot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}"));
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//图示
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 图表
RingPlot plot = (RingPlot) chart.getPlot();
//环形的旋转角度
plot.setStartAngle(20);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 设置字体
updateFont(chart);
//设置图表
updatePlot(chart);
// 把JFreeChart面板保存在窗体里
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
RingDeom8 demo = new RingDeom8("环形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.8 堆积条形图
实例284 基本堆积条形图
public StackedBarDemo1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createStackedBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
StackedBarDemo1 demo = new StackedBarDemo1("堆积条形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例285 横向堆积条形图
public StackedBarDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createStackedBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.HORIZONTAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
StackedBarDemo2 demo = new StackedBarDemo2("堆积条形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例286 设置边线距离
public StackedBarDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书";
final String series2 = "VC图书";
final String series3 = "VB图书";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createStackedBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
final ValueAxis rangeAxis = categoryPlot.getRangeAxis();
//下边线距离
//rangeAxis.setLowerMargin(1.15);
//上边线距离
rangeAxis.setUpperMargin(0.2);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
StackedBarDemo3 demo = new StackedBarDemo3("堆积条形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例287 分组堆积条形图
public StackedBarDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private CategoryDataset getCategoryDataset() {
// 行关键字
final String series1 = "JAVA图书(含光盘)";
final String series2 = "VC图书(含光盘)";
final String series3 = "VB图书(含光盘)";
final String series11 = "JAVA图书(无光盘)";
final String series21 = "VC图书(无光盘)";
final String series31 = "VB图书(无光盘)";
// 列关键字
final String category1 = "1月";
final String category2 = "2月";
final String category3 = "3月";
final String category4 = "4月";
final String category5 = "5月";
final String category6 = "6月";
// 创建分类数据集
final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(310, series1, category1);
dataset.addValue(489, series1, category2);
dataset.addValue(512, series1, category3);
dataset.addValue(589, series1, category4);
dataset.addValue(359, series1, category5);
dataset.addValue(402, series1, category6);
dataset.addValue(300, series11, category1);
dataset.addValue(469, series11, category2);
dataset.addValue(502, series11, category3);
dataset.addValue(569, series11, category4);
dataset.addValue(369, series11, category5);
dataset.addValue(412, series11, category6);
dataset.addValue(501, series2, category1);
dataset.addValue(200, series2, category2);
dataset.addValue(308, series2, category3);
dataset.addValue(580, series2, category4);
dataset.addValue(418, series2, category5);
dataset.addValue(315, series2, category6);
dataset.addValue(511, series21, category1);
dataset.addValue(210, series21, category2);
dataset.addValue(318, series21, category3);
dataset.addValue(560, series21, category4);
dataset.addValue(408, series21, category5);
dataset.addValue(305, series21, category6);
dataset.addValue(480, series3, category1);
dataset.addValue(381, series3, category2);
dataset.addValue(264, series3, category3);
dataset.addValue(185, series3, category4);
dataset.addValue(209, series3, category5);
dataset.addValue(302, series3, category6);
dataset.addValue(470, series31, category1);
dataset.addValue(371, series31, category2);
dataset.addValue(254, series31, category3);
dataset.addValue(165, series31, category4);
dataset.addValue(219, series31, category5);
dataset.addValue(312, series31, category6);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
CategoryDataset dataset = getCategoryDataset();
JFreeChart chart = ChartFactory.createStackedBarChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
CategoryAxis categoryAxis = categoryPlot.getDomainAxis();
// X轴字体
categoryAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
categoryAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis valueAxis = categoryPlot.getRangeAxis();
// y轴字体
valueAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
valueAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
CategoryPlot categoryPlot = chart.getCategoryPlot();
//添加X轴子标签
SubCategoryAxis domainAxis = new SubCategoryAxis("月份");
domainAxis.addSubCategory("含光盘");
domainAxis.addSubCategory("无光盘");
categoryPlot.setDomainAxis(domainAxis);
//分组堆积条形图渲染
GroupedStackedBarRenderer renderer = new GroupedStackedBarRenderer();
KeyToGroupMap map = new KeyToGroupMap("G1");
//分为两组
map.mapKeyToGroup("JAVA图书(含光盘)", "G1");
map.mapKeyToGroup("VC图书(含光盘)", "G1");
map.mapKeyToGroup("VB图书(含光盘)", "G1");
map.mapKeyToGroup("JAVA图书(无光盘)", "G2");
map.mapKeyToGroup("VC图书(无光盘)", "G2");
map.mapKeyToGroup("VB图书(无光盘)", "G2");
renderer.setSeriesToGroupMap(map);
categoryPlot.setRenderer(renderer);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
StackedBarDemo4 demo = new StackedBarDemo4("堆积条形图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
9.9 时序图
实例288 基本时序图
public TimeSeriesDemo1(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo1 demo = new TimeSeriesDemo1("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例289 设置时间显示格式
public TimeSeriesDemo2(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
DateAxis dateAxis = (DateAxis) xyPlot.getDomainAxis();
//设置显示格式
dateAxis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM"));
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo2 demo = new TimeSeriesDemo2("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例290 添加双时间轴
public TimeSeriesDemo3(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
DateAxis dateAxis = (DateAxis) xyPlot.getDomainAxis();
//设置显示格式
dateAxis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM"));
//添加时间时间轴
DateAxis dateAxis1 = new DateAxis();
//添加时间范围
dateAxis1.setRange(new Month(1, 2010).getStart(), new Month(7, 2010).getEnd());
//设置时间表格
dateAxis1.setDateFormatOverride(new SimpleDateFormat("yyyy-MMM"));
xyPlot.setDomainAxis(1,dateAxis1);
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo3 demo = new TimeSeriesDemo3("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例291 双时间轴位置
public TimeSeriesDemo4(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
DateAxis dateAxis = (DateAxis) xyPlot.getDomainAxis();
//设置显示格式
dateAxis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM"));
//添加时间轴
DateAxis dateAxis1 = new DateAxis();
dateAxis1.setRange(new Month(1, 2010).getStart(), new Month(7, 2010).getEnd());
dateAxis1.setDateFormatOverride(new SimpleDateFormat("yyyy-MMM"));
xyPlot.setDomainAxis(1,dateAxis1);
//设置时间轴
xyPlot.setDomainAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo4 demo = new TimeSeriesDemo4("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例292 动态显示十字标记
public TimeSeriesDemo5(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
// 显示十字
xyPlot.setDomainCrosshairVisible(true);
xyPlot.setRangeCrosshairVisible(true);
DateAxis dateAxis = (DateAxis) xyPlot.getDomainAxis();
// 设置显示格式
dateAxis.setDateFormatOverride(new SimpleDateFormat("yyyy-MMM"));
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo5 demo = new TimeSeriesDemo5("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例293 添加Y轴标记
public TimeSeriesDemo6(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
//添加Y轴标记
ValueMarker marker = new ValueMarker(450.0);
marker.setPaint(Color.orange);
xyPlot.addRangeMarker(marker);
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo6 demo = new TimeSeriesDemo6("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例294 添加X轴标记
public TimeSeriesDemo7(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
// 在X轴添加季度标记
Quarter quarter = new Quarter(2, 2010);
ValueMarker marker = new ValueMarker(quarter.getFirstMillisecond());
marker.setPaint(Color.ORANGE);
//添加标记
xyPlot.addDomainMarker(marker);
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo7 barDemo = new TimeSeriesDemo7("时序图");
barDemo.createPlot();
barDemo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(barDemo);
// 设置可以显示
barDemo.setVisible(true);
}
实例295 设置刻度单位
public TimeSeriesDemo8(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
// 分类图表
XYPlot xyPlot = chart.getXYPlot();
//设置单位
final DateAxis axis = (DateAxis) xyPlot.getDomainAxis();
//设置刻度单位
axis.setTickUnit(new DateTickUnit(DateTickUnitType.MONTH, 2,
new SimpleDateFormat("yyyy-MMM")));
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
// 修改图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo8 demo = new TimeSeriesDemo8("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}
实例296 设置X轴范围
public TimeSeriesDemo9(String title) {
super(title);
}
/**
* 创建数据集
*
* @return
*/
private XYDataset getDataset() {
final TimeSeries s1 = new TimeSeries("JAVA图书");
s1.add(new Month(1, 2010), 480);
s1.add(new Month(2, 2010), 381);
s1.add(new Month(3, 2010), 264);
s1.add(new Month(4, 2010), 185);
s1.add(new Month(5, 2010), 209);
s1.add(new Month(6, 2010), 302);
final TimeSeries s2 = new TimeSeries("VC图书");
s2.add(new Month(1, 2010), 315);
s2.add(new Month(2, 2010), 418);
s2.add(new Month(3, 2010), 580);
s2.add(new Month(4, 2010), 308);
s2.add(new Month(5, 2010), 200);
s2.add(new Month(6, 2010), 501);
final TimeSeries s3 = new TimeSeries("VB图书");
s3.add(new Month(1, 2010), 310);
s3.add(new Month(2, 2010), 489);
s3.add(new Month(3, 2010), 512);
s3.add(new Month(4, 2010), 589);
s3.add(new Month(5, 2010), 359);
s3.add(new Month(6, 2010), 402);
final TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
dataset.addSeries(s3);
return dataset;
}
/**
* 生成JFreeChart
*
* @return
*/
private JFreeChart getJFreeChart() {
XYDataset dataset = getDataset();
JFreeChart chart = ChartFactory.createTimeSeriesChart("2010年上半年销售量", // 图表标题
"月份", // x轴标签
"销售量(单位:本)", // y轴标签
dataset, // 数据集
true, // 是否显示图例
false, // 是否生成工具
false // 是否生成URL链接
);
return chart;
}
/**
* 修改字体
*
* @param chart
*/
private void updateFont(JFreeChart chart) {
// 标题
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
LegendTitle legendTitle = chart.getLegend();
legendTitle.setItemFont(new Font("宋体", Font.PLAIN, 14));
// 图表
XYPlot xyPlot = chart.getXYPlot();
ValueAxis domainyAxis = xyPlot.getDomainAxis();
// X轴字体
domainyAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// X轴标签字体
domainyAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
ValueAxis rangeAxis = xyPlot.getRangeAxis();
// y轴字体
rangeAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
// y轴标签字体
rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 14));
}
/**
* 更新图表显示
*
* @param chart
*/
private void updatePlot(JFreeChart chart) {
Day endDay = new Day(1,6,2010);
SerialDate serialDate = SerialDate.addMonths(-5, endDay.getSerialDate());
Day beginDay = new Day(serialDate.toDate());
DateAxis axis = (DateAxis) chart.getXYPlot().getDomainAxis();
//设置X轴开始结束位置
axis.setRange(beginDay.getStart(), endDay.getEnd());
}
/**
* 设置图表
*
* @param chart
*/
public void createPlot() {
JFreeChart chart = getJFreeChart();
// 修改字体
updateFont(chart);
//更新图表
updatePlot(chart);
setContentPane(new ChartPanel(chart));
}
public static void main(String[] args) {
TimeSeriesDemo9 demo = new TimeSeriesDemo9("时序图");
demo.createPlot();
demo.pack();
// 把窗体显示到显示器中央
RefineryUtilities.centerFrameOnScreen(demo);
// 设置可以显示
demo.setVisible(true);
}