之前没用过jfreechart实际场景需要记录一下关于用jfreechart同时绘制频率直方图+曲线代码如下
public String productNormalDistributionCurve(ReportBasicEntity reportBasicEntity) {
try {
List<XyEntity> psyDistribution = reportBasicEntity.getPsyDistribution();//数据
if (psyDistribution==null||psyDistribution.isEmpty()) {
return null;
}
XYSeries barseries = new XYSeries("心态分布图");//柱状图
XYSeriesCollection xyseriescollection = new
XYSeriesCollection();//柱状图 关于series的collection
//collection,barWidth
XYSeriesCollection dataset = new XYSeriesCollection();//折线图collection
XYSeries lineseries = new XYSeries("标准线");//折线图series
/*XYSeries series2 = new XYSeries("心态分布图");*/
for (int i = 0; i < psyDistribution.size(); i++) {
lineseries.add(psyDistribution.get(i).getX(), psyDistribution.get(i).getY());//取出折线图所需数据
barseries.add(psyDistribution.get(i).getX(), psyDistribution.get(i).getY1());//取出柱状图数据
/*series2.add(psyDistribution.get(i).getX(), psyDistribution.get(i).getY1());*/
}
dataset.addSeries(lineseries);//添加到dataset
xyseriescollection.addSeries(barseries);
XYBarDataset xyBarDataset = new XYBarDataset(xyseriescollection,
psyDistribution.get(1).getX()-psyDistribution.get(0).getX());
/*dataset.addSeries(series2);*/
JFreeChart chart = ChartFactory.createXYLineChart(
"",
"x", "y",
dataset
);//利用chartFactory创建JFreeChart对象
XYPlot plot = (XYPlot) chart.getPlot();//此方法返回节点图表作为XYPlot。使用XYPolt我们可以XY图表做了一些实用操作
plot.setDataset(1,xyBarDataset);//将柱状图数据塞入
XYBarRenderer xyBarRenderer = new XYBarRenderer();
xyBarRenderer.setSeriesVisibleInLegend(0,false);//设置不显示series的提示信息
xyBarRenderer.setSeriesPaint(0,new Color(10,173,84));//series的图形颜色
plot.setRenderer(1,xyBarRenderer);//设置图形绘制单元
plot.getRenderer().setSeriesVisibleInLegend(0, false);//设置不显示series的提示信息
Font font = new Font("黑体", Font.BOLD, 20);//字体
chart.getLegend().setItemFont(font);
plot.setBackgroundPaint(null);//背景
File file = null;
plot.setOutlineVisible(false);//边框
try {
file = new File(IdUtil.simpleUUID()+".jpg");
ChartUtilities.saveChartAsJPEG(file, chart, 634, 323);
System.out.println("Normal distribution curve saved successfully.");
return Base64.encode(file);
} catch (IOException e) {
e.printStackTrace();
} finally {
FileUtil.del(file);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
生成效果如下