jfreechart 饼图



package realtimeMonitor;

import java.awt.Color;
import java.awt.Font;
import java.awt.RenderingHints;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.json.JSONException;

public class SwapSpacePie {
public static void createPieChart() throws NumberFormatException, JSONException, IOException {
//用工厂类创建饼图
JFreeChart pieChart = ChartFactory.createPieChart("SwapSpacePie:",
createDataset(), true, true, false);
// RenderingHints做文字渲染参数的修改
// VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭.
pieChart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
//得到饼图的Plot对象
PiePlot piePlot = (PiePlot) pieChart.getPlot();
setSection(piePlot);
setLabel(piePlot);
setNoDataMessage(piePlot);
setNullAndZeroValue(piePlot);
//将饼图显示在图像界面上
FileOutputStream ous = null;
String filePath="";//绝对路径
String webPath="WarnImages/swap_space_pie.png";//"+request.getSession().getId()+"
try {
filePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath();
filePath =filePath.replace("WEB-INF/classes/", "");
filePath += webPath;
// System.out.println(filePath);
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
if (null != pieChart) {
ous = new FileOutputStream(filePath);
ChartUtilities.writeChartAsPNG(ous, pieChart, 400, 200);
//ous.flush();
}
} catch (IOException e) {
e.printStackTrace();
} // 生成图片
finally {
try {
ous.close();// 最后关闭文件流
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static DefaultPieDataset createDataset() throws NumberFormatException, JSONException, IOException {
//设置数据
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("已使用", Integer.parseInt(ResolveJSONForShell.resolveJSONForSwapSpace()[0]));
pieDataset.setValue("未使用", Integer.parseInt(ResolveJSONForShell.resolveJSONForSwapSpace()[1]));
return pieDataset;
}

public static void setSection(PiePlot pieplot) {
//设置扇区颜色
pieplot.setSectionPaint("已使用", new Color(160, 160, 255));
pieplot.setSectionPaint("未使用", new Color(128, 128, 223));
//设置扇区分离显示
pieplot.setExplodePercent("已使用", 0.2D);
//设置扇区边框不可见
pieplot.setSectionOutlinesVisible(false);
}

public static void setLabel(PiePlot pieplot) {
//设置扇区标签显示格式:关键字:值(百分比)
pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
"{0}:{1}({2} percent)"));
//设置扇区标签颜色
pieplot.setLabelBackgroundPaint(new Color(220, 220, 220));
pieplot.setLabelFont((new Font("宋体", Font.PLAIN, 12)));

}

public static void setNoDataMessage(PiePlot pieplot) {
//设置没有数据时显示的信息
pieplot.setNoDataMessage("无数据");
//设置没有数据时显示的信息的字体
pieplot.setNoDataMessageFont(new Font("宋体", Font.BOLD, 14));
//设置没有数据时显示的信息的颜色
pieplot.setNoDataMessagePaint(Color.red);
}

public static void setNullAndZeroValue(PiePlot piePlot) {
//设置是否忽略0和null值
piePlot.setIgnoreNullValues(true);
piePlot.setIgnoreZeroValues(true);
}

private static int randomNum()
{
System.out.println((Math.random()*10+5));
return (int)(Math.random()*10+5);
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值