
The JFreeChart Class Library
Version 0.9.16
Developer Guide
Written by David Gilb ert
January 21, 2004
c
2000-2004, Object Refinery Limited. All rights reserved.
IMPORTANT NOTICE:
If you choose to use this document you do so entirely at your own
risk.

Contents
1 Introduction 12
1.1 What is JFreeChart? . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2 This Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Comments and Suggestions . . . . . . . . . . . . . . . . . . . . . 14
2 Sample Charts 15
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Pie Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Bar Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Line Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.5 XY Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Area Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Difference Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.8 Step Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.9 Gantt C hart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.10 Multiple Axis Charts . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.11 Combined Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.12 Future Development . . . . . . . . . . . . . . . . . . . . . . . . . 27
3 Downloading and Installing JFreeChart 28
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Unpacking the Files . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Running the Demonstration Applications . . . . . . . . . . . . . 30
3.5 Compiling the Source . . . . . . . . . . . . . . . . . . . . . . . . 30
3.6 Generating the Javadoc Documentation . . . . . . . . . . . . . . 30
4 Using JFreeChart 31
4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Creating Your First Chart . . . . . . . . . . . . . . . . . . . . . . 31
5 Bar Charts 34
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.2 A Bar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3 Customising Bar Charts . . . . . . . . . . . . . . . . . . . . . . . 39
1

CONTENTS 2
6 Line Charts 41
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2 A Line Chart Based On A Category Dataset . . . . . . . . . . . 41
7 Time Series Charts 52
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.2 Time Series Charts . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8 Customising Charts 58
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.2 Chart Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
8.3 Plot Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.4 Axis Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9 Dynamic Charts 64
9.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
9.3 The Demo Application . . . . . . . . . . . . . . . . . . . . . . . . 65
10 Tooltips 69
10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
10.2 Generating Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . 69
10.3 Collecting Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . 70
10.4 Displaying Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . 70
10.5 Disabling Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.6 Customising Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . 71
11 Using Multiple Axes 72
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11.2 An Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
11.3 Hints and Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
12 Combined Charts 75
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
12.2 Combined Domain Category Plot . . . . . . . . . . . . . . . . . . 75
12.3 Combined Range Category Plot . . . . . . . . . . . . . . . . . . . 76
12.4 Combined Domain XY Plot . . . . . . . . . . . . . . . . . . . . . 78
12.5 Combined Range XY Plot . . . . . . . . . . . . . . . . . . . . . . 79
13 Datasets and JDBC 81
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
13.2 About JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
13.3 Sample Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
13.4 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
13.5 The JDBC Driver . . . . . . . . . . . . . . . . . . . . . . . . . . 84
13.6 The Demo Applications . . . . . . . . . . . . . . . . . . . . . . . 84

CONTENTS 3
14 Exporting Charts to Acrobat PDF 86
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
14.2 What is Acrobat PDF? . . . . . . . . . . . . . . . . . . . . . . . 86
14.3 iText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
14.4 Graphics2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
14.5 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
14.6 The Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
14.7 Viewing the PDF File . . . . . . . . . . . . . . . . . . . . . . . . 92
14.8 Unicode Characters . . . . . . . . . . . . . . . . . . . . . . . . . . 92
15 Exporting Charts to SVG Format 96
15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
15.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
15.3 A Sample Application . . . . . . . . . . . . . . . . . . . . . . . . 96
16 Applets 100
16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
16.2 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
16.3 A Sample Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
17 Servlets 105
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
17.2 A Simple Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
17.3 Deploying the Servlet . . . . . . . . . . . . . . . . . . . . . . . . 108
17.4 Embedding Charts in HTML Pages . . . . . . . . . . . . . . . . . 108
17.5 Supporting Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
17.6 Deploying Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . 113
18 Miscellaneous 115
18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
18.2 X11 / Headless Java . . . . . . . . . . . . . . . . . . . . . . . . . 115
18.3 Java Server Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
19 Packages 116
19.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
20 Package: org.jfree.chart 117
20.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
20.2 ChartColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
20.3 ChartFactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
20.4 ChartFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
20.5 ChartMouseEvent . . . . . . . . . . . . . . . . . . . . . . . . . . 119
20.6 ChartMouseListener . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.7 ChartPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
20.8 ChartPanelConstants . . . . . . . . . . . . . . . . . . . . . . . . . 122
20.9 ChartRenderingInfo . . . . . . . . . . . . . . . . . . . . . . . . . 122
20.10ChartUtilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
20.11ClipPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
20.12CrosshairInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
20.13DrawableLegendItem . . . . . . . . . . . . . . . . . . . . . . . . . 126

CONTENTS 4
20.14Effect3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
20.15IntervalMarker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
20.16JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
20.17JFreeChartConstants . . . . . . . . . . . . . . . . . . . . . . . . . 129
20.18Legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
20.19LegendItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
20.20LegendItemCollection . . . . . . . . . . . . . . . . . . . . . . . . 130
20.21LegendItemLayout . . . . . . . . . . . . . . . . . . . . . . . . . . 130
20.22Marker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
20.23MarkerLabelPosition . . . . . . . . . . . . . . . . . . . . . . . . . 130
20.24MeterLegend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
20.25Spacer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
20.26StandardLegend . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
20.27StandardLegendItemLayout . . . . . . . . . . . . . . . . . . . . . 132
21 Package: org.jfree.chart.annotations 133
21.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
21.2 CategoryAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . 133
21.3 CategoryTextAnnotation . . . . . . . . . . . . . . . . . . . . . . . 133
21.4 TextAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
21.5 XYAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
21.6 XYDrawableAnnotation . . . . . . . . . . . . . . . . . . . . . . . 135
21.7 XYLineAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . 135
21.8 XYPointerAnnotation . . . . . . . . . . . . . . . . . . . . . . . . 135
21.9 XYTextAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . 136
22 Package: org.jfree.chart.axis 137
22.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
22.2 Axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
22.3 AxisCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
22.4 AxisConstants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
22.5 AxisLocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
22.6 AxisSpace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
22.7 AxisState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
22.8 CategoryAnchor . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
22.9 CategoryAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
22.10CategoryAxis3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
22.11CategoryLabelPosition . . . . . . . . . . . . . . . . . . . . . . . . 146
22.12CategoryLabelPositions . . . . . . . . . . . . . . . . . . . . . . . 147
22.13CategoryTick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
22.14ColorBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
22.15DateAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
22.16DateTickMarkPosition . . . . . . . . . . . . . . . . . . . . . . . . 150
22.17DateTick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
22.18DateTickUnit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
22.19LogarithmicAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
22.20MarkerAxisBand . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
22.21NumberAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
22.22NumberAxis3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
22.23NumberTick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155