java 画折线图_JAVA Swing使用JFreeChart实现折线图绘制

本文展示了如何使用JAVA Swing结合JFreeChart库来创建一个时间序列的折线图,详细讲解了从数据系列的创建到图表的定制,包括设置标题、时间轴格式、显示数据点和值等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 importorg.jfree.chart.ChartFactory;2 importorg.jfree.chart.ChartPanel;3 importorg.jfree.chart.JFreeChart;4 importorg.jfree.chart.axis.DateAxis;5 importorg.jfree.chart.axis.DateTickUnit;6 importorg.jfree.chart.labels.ItemLabelAnchor;7 importorg.jfree.chart.labels.ItemLabelPosition;8 importorg.jfree.chart.labels.StandardXYItemLabelGenerator;9 importorg.jfree.chart.plot.XYPlot;10 importorg.jfree.chart.renderer.xy.XYItemRenderer;11 importorg.jfree.chart.renderer.xy.XYLineAndShapeRenderer;12 importorg.jfree.chart.title.TextTitle;13 importorg.jfree.data.time.Month;14 importorg.jfree.data.time.TimeSeries;15 importorg.jfree.data.time.TimeSeriesCollection;16 importorg.jfree.ui.TextAnchor;17

18 import javax.swing.*;19 import java.awt.*;20 importjava.text.SimpleDateFormat;21

22 public classTimeSeriesChart {23 privateTimeSeriesChart() {24

25 //A网站的访问量统计

26 TimeSeries timeSeries1 = new TimeSeries("A", Month.class);27 //添加数据

28 timeSeries1.add(new Month(1, 2016), 154);29 timeSeries1.add(new Month(2, 2016), 256);30 timeSeries1.add(new Month(3, 2016), 312);31 timeSeries1.add(new Month(4, 2016), 489);32 timeSeries1.add(new Month(5, 2016), 563);33 timeSeries1.add(new Month(6, 2016), 555);34 timeSeries1.add(new Month(7, 2016), 359);35 timeSeries1.add(new Month(8, 2016), 291);36 timeSeries1.add(new Month(9, 2016), 123);37 timeSeries1.add(new Month(10, 2016), 438);38 timeSeries1.add(new Month(11, 2016), 286);39

40 //A网站的访问量统计

41 TimeSeries timeSeries2 = new TimeSeries("A", Month.class);42 //添加数据

43 timeSeries2.add(new Month(1, 2016), 124);44 timeSeries2.add(new Month(2, 2016), 326);45 timeSeries2.add(new Month(3, 2016), 12);46 timeSeries2.add(new Month(4, 2016), 567);47 timeSeries2.add(new Month(5, 2016), 546);48 timeSeries2.add(new Month(6, 2016), 123);49 timeSeries2.add(new Month(7, 2016), 222);50 timeSeries2.add(new Month(8, 2016), 545);51 timeSeries2.add(new Month(9, 2016), 56);52 timeSeries2.add(new Month(10, 2016), 543);53 timeSeries2.add(new Month(11, 2016), 221);54

55 //定义时间序列的集合

56 TimeSeriesCollection lineDataset = newTimeSeriesCollection();57 lineDataset.addSeries(timeSeries1);58 lineDataset.addSeries(timeSeries2);59

60

61 //JFreeChart chart = ChartFactory.createXYStepChart("Time line graph", "M", "F", xySeriesCollection, PlotOrientation.HORIZONTAL, false, false, false);

62 JFreeChart chart = ChartFactory.createTimeSeriesChart("Time line graph", "M", "F", lineDataset, false, false, false);63 //设置主标题

64 chart.setTitle(new TextTitle("A,B网站访问量统计对比图"));65 //设置子标题

66 TextTitle subtitle = new TextTitle("2016年度", new Font("宋体", Font.BOLD, 12));67 chart.addSubtitle(subtitle);68

69 chart.setAntiAlias(true);70

71 //设置时间轴的范围。

72 XYPlot plot =(XYPlot) chart.getPlot();73 DateAxis dateaxis =(DateAxis) plot.getDomainAxis();74 dateaxis.setDateFormatOverride(new SimpleDateFormat("M"));75 dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 1));76

77 //设置曲线是否显示数据点

78 XYLineAndShapeRenderer xylinerenderer =(XYLineAndShapeRenderer) plot.getRenderer();79 xylinerenderer.setBaseShapesVisible(true);80

81 //设置曲线显示各数据点的值

82 XYItemRenderer xyitem =plot.getRenderer();83 xyitem.setBaseItemLabelsVisible(true);84 xyitem.setBasePositiveItemLabelPosition(newItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));85 xyitem.setBaseItemLabelGenerator(newStandardXYItemLabelGenerator());86 xyitem.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));87 plot.setRenderer(xyitem);88

89 JPanel jPanel = newChartPanel(chart);90

91

92 JFrame frame = new JFrame("JFreechart Test");93 frame.add(jPanel);94 frame.setBounds(0, 0, 800, 600);95 frame.setVisible(true);96 }97

98 public static voidmain(String[] args) {99 TimeSeriesChart timeSeriesChart = newTimeSeriesChart();100 }101 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值