本文链接:https://blog.csdn.net/cnds123321/article/details/89600615
目录链接:https://blog.csdn.net/cnds123321/article/details/89600379
三维条形图是一样的条形图另外一个不错的3D效果。 3D效果可以通过添加一些额外的代码来实现,它会创建一个柱形图3D效果。
6.2.1 测试数据
学科 | 最高分 | 平均分 | 最低分 |
---|---|---|---|
语文 | 98 | 89 | 60 |
数学 | 99 | 90 | 70 |
英语 | 80 | 75 | 33 |
6.2.2 基于swing的应用
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import javax.swing.*;
import java.io.*;
public class BarChart {
public static void main(String[] args) throws IOException {
//创建一个数据集对象
DefaultCategoryDataset dataset=null;
//设置数据集
dataset=new DefaultCategoryDataset();
//第一个参数是第三个参数的值,即“最高分”,第二个参数表示目录轴的分类,第三个参数表示的x轴显示标签
dataset.addValue(98,"语文","最高分");
dataset.addValue(89,"语文","平均分");
dataset.addValue(60,"语文","最低分");
dataset.addValue(99,"数学","最高分");
dataset.addValue(90,"数学","平均分");
dataset.addValue(70,"数学","最低分");
dataset.addValue(80,"英语","最高分");
dataset.addValue(75,"英语","平均分");
dataset.addValue(33,"英语","最低分");
// 创建简单的条形图
JFreeChart freeChart=ChartFactory.createBarChart3D(
"学生信息",// 图表标题
"学科",// 水平轴的显示标签
"成绩",//垂直轴的显示标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,//图表方向:水平,垂直
true,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//以面板显示,创建一个图表面板
ChartPanel chartPanel=new ChartPanel(freeChart);
//设置大小
chartPanel.setPreferredSize(new java.awt.Dimension(560,400));
//创建一个主窗口来显示面板
JFrame frame=new JFrame("条形图");
frame.setLocation(500,400);
frame.setSize(600,500);
//将图表面板设置为主窗口的内容面板
frame.setContentPane(chartPanel);
//显示主窗口
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
结果展示:
6.2.3 创建图像
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import java.io.*;
public class BarChart {
public static void main(String[] args) throws IOException {
//创建一个数据集对象
DefaultCategoryDataset dataset=null;
//设置数据集
dataset=new DefaultCategoryDataset();
//第一个参数是第三个参数的值,即“最高分”,第二个参数表示目录轴的分类,第三个参数表示的x轴显示标签
dataset.addValue(98,"语文","最高分");
dataset.addValue(89,"语文","平均分");
dataset.addValue(60,"语文","最低分");
dataset.addValue(99,"数学","最高分");
dataset.addValue(90,"数学","平均分");
dataset.addValue(70,"数学","最低分");
dataset.addValue(80,"英语","最高分");
dataset.addValue(75,"英语","平均分");
dataset.addValue(33,"英语","最低分");
// 创建简单的条形图
JFreeChart freeChart=ChartFactory.createBarChart3D(
"学生信息",// 图表标题
"学科",// 水平轴的显示标签
"成绩",//垂直轴的显示标签
dataset,//数据集,即要显示在图表上的数据
PlotOrientation.VERTICAL,//图表方向:水平,垂直
true,//是否显示图例
false,//是否显示提示
false//是否生成URL连接
);
//使用输出流输出图表文件
OutputStream os=new FileOutputStream("c:/picture.jpg");
ChartUtilities.writeChartAsJPEG(os,freeChart,500,500);
}
}
结果展示: