JFreeChart动态画折线图的方法
时间:2021-01-20 14:18:26|栏目:JAVA代码|点击: 次
本文实例为大家分享了JFreeChart动态画折线图的具体代码,供大家参考,具体内容如下

每隔一秒画一次,一分钟后重新画
需要的jar包是:gnujaxp.jar,jcommon-1.0.16.jar,jfreechart-1.0.13.jar
public class JFreeZheXianTest{
public static XYSeries xyCPUseries = new XYSeries("CPU");
public static int hundroud = 0;
public static JFreeChart jfreechart = null;
public JPanel getCPUJFreeChart(){
jfreechart = ChartFactory.createXYLineChart(
null, null, null, createDataset1(),
PlotOrientation.VERTICAL, false, true, false);
StandardChartTheme mChartTheme = new StandardChartTheme("CN");
mChartTheme.setLargeFont(new Font("黑体", Font.BOLD, 20));
mChartTheme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 15));
mChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15));
ChartFactory.setChartTheme(mChartTheme);
jfreechart.setBorderPaint(new Color(0,204,205));
jfreechart.setBorderVisible(true);
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
// Y轴
NumberAxis numberaxis = (NumberAxis) xyplot.getRangeAxis();
numberaxis.setLowerBound(0);
numberaxis.setUpperBound(100);
numberaxis.setTickUnit(new NumberTickUnit(100d));
// 只显示整数值
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
// numberaxis.setAutoRangeIncludesZero(true);
numberaxis.setLowerMargin(0); // 数据轴下(左)边距
numberaxis.setMinorTickMarksVisible(false);// 标记线是否显示
numberaxis.setTickMarkInsideLength(0);// 外刻度线向内长度
numberaxis.setTickMarkOutsideLength(0);
// X轴的设计
NumberAxis x = (NumberAxis) xyplot.getDomainAxis();
x.setAutoRange(true);// 自动设置数据轴数据范围
// 自己设置横坐标的值
x.setAutoTickUnitSelection(false);
x.setTickUnit(new NumberTickUnit(60d));
// 设置最大的显示值和最小的显示值
x.setLowerBound(0);
x.setUpperBound(60);
// 数据轴的数据标签:只显示整数标签
x.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
x.setAxisLineVisible(true);// X轴竖线是否显示
x.setTickMarksVisible(false);// 标记线是否显示
RectangleInsets offset = new RectangleInsets(0, 0, 0, 0);
xyplot.setAxisOffset(offset);// 坐标轴到数据区的间距
xyplot.setBackgroundAlpha(0.0f);// 去掉柱状图的背景色
xyplot.setOutlinePaint(null);// 去掉边框
// ChartPanel chartPanel = new ChartPanel(jfreechart);
// chartPanel.restoreAutoDomainBounds();//重置X轴
ChartPanel chartPanel = new ChartPanel(jfreechart, true);
return chartPanel;
}
/**
* 该方法是数据的设计
*
* @return
*/
public static XYDataset createDataset1() {
XYSeriesCollection xyseriescollection = new XYSeriesCollection();
xyseriescollection.addSeries(xyCPUseries);
return xyseriescollection;
}
/**
* 随机生成的数据
*/
public static void dynamicRun() {
int i = 0;
while (true) {
double factor = Math.random()*100;
hundroud = (int)factor;
jfreechart.setTitle("CPU的大小是: "+hundroud+"%");
jfreechart.getTitle().setFont(new Font("微软雅黑", 0, 16));//设置标题字体
xyCPUseries.add(i, factor);
try {
Thread.currentThread();
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
if (i == 60){
i=0;
xyCPUseries.delete(0, 59);
continue;
}
}
}
public static void main(String[] args) {
JFreeZheXianTest jz = new JFreeZheXianTest();
JFrame frame = new JFrame();
frame.setSize(700, 500);
frame.getContentPane().add(jz.getCPUJFreeChart(), BorderLayout.CENTER);
frame.setVisible(true);
frame.setLocationRelativeTo(null); // 窗口居于屏幕正中央
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
dynamicRun();
}
}
上一篇:基于Protobuf动态解析在Java中的应用 包含例子程序
栏 目:JAVA代码
下一篇:Java简单实现约瑟夫环算法示例
本文标题:JFreeChart动态画折线图的方法
本文地址:http://www.codeinn.net/misctech/48308.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




