The JFreeChart Class Library
Version 1.0.4
Developer Guide
Written by David Gilb e rt
February 9, 2007
c
2000-2007, 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 15
1.1 What is JFreeChart? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 This Document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Comments and Suggestions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Sample Charts 18
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2 Pie Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Bar Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Line Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 XY Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6 Time Series Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.7 Histograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.8 Area Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.9 Difference Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.10 Step Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.11 Gantt Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.12 Multiple Axis Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.13 Combined and Overlaid Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.14 Future Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 Downloading and Installing JFreeChart 33
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Unpacking the Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4 Running the Demonstration Applications . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Compiling the Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6 Generating the Javadoc Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 35
4 Using JFreeChart 36
4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Creating Your First Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5 Pie Charts 39
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Creating a Simple Pie Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Section Colours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.4 Section Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.5 Null, Zero and Negative Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.6 Section and Legend Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.7 Explo ded Sec tions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.8 3D Pie Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1
CONTENTS 2
5.9 Multiple Pie Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6 Bar Charts 44
6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2 A Bar Chart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.3 The ChartFactory Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
6.4 Simple Chart Customisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.5 Customising the Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7 Line Charts 50
7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.2 A Line Chart Based On A Category Dataset . . . . . . . . . . . . . . . . . . . . . . 50
7.3 A Line Chart Based On An XYDataset . . . . . . . . . . . . . . . . . . . . . . . . . 55
8 Time Series Charts 60
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.2 Time Series Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9 Customising Charts 66
9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.2 Chart Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
9.3 Plot Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
9.4 Axis Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
10 Dynamic Charts 71
10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.3 The Demo Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
11 Tooltips 76
11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
11.2 Generating Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
11.3 Collecting Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.4 Displaying Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.5 Disabling Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
11.6 Customising Tool Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
12 Item Labels 78
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
12.2 Displaying Item Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
12.3 Item Label Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
12.4 Item Label Positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
12.5 Customising the Item Label Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
12.6 Example 1 - Values Above a Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . 83
12.7 Example 2 - Displaying Percentages . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
13 Multiple Axes and Datasets 90
13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
13.2 An Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
13.3 Hints and Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
CONTENTS 3
14 Combined Charts 93
14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
14.2 Combined Domain Category Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
14.3 Combined Range Category Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
14.4 Combined Domain XY Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
14.5 Combined Range XY Plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
15 Datasets and JDBC 98
15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
15.2 About JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
15.3 Sample Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
15.4 PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
15.5 The JDBC Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
15.6 The Demo Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
16 Exporting Charts to Acrobat PDF 102
16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
16.2 What is Acrobat PDF? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
16.3 iText . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
16.4 Graphics2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
16.5 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
16.6 The Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
16.7 Viewing the PDF File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
16.8 Unicode Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
17 Exporting Charts to SVG Format 110
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
17.2 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
17.3 A Sample Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
18 Applets 113
18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
18.2 Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
18.3 A Sample Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
19 Servlets 117
19.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
19.2 A Simple Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
19.3 Compiling the Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
19.4 Deploying the Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
19.5 Embedding Charts in HTML Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
19.6 Supporting Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
19.7 Deploying Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
20 Miscellaneous 128
20.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
20.2 X11 / Headless Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
20.3 Java Server Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
20.4 Loading Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
21 Packages 129
21.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
CONTENTS 4
22 Package: org.j free.chart 130
22.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
22.2 ChartColor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
22.3 ChartFactory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
22.4 ChartFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
22.5 ChartMouseEvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
22.6 ChartMouseListener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
22.7 ChartPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
22.8 ChartRenderingInfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
22.9 ChartUtilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
22.10ClipPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
22.11DrawableLegendItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
22.12Effect3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
22.13JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
22.14LegendItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
22.15LegendItemCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
22.16LegendItemSource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
22.17LegendRenderingOrder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
22.18PolarChartPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
23 Package: org.j free.chart.annotations 151
23.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
23.2 AbstractXYAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
23.3 CategoryAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
23.4 CategoryLineAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
23.5 CategoryPointerAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
23.6 CategoryTextAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
23.7 TextAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
23.8 XYAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
23.9 XYBoxAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
23.10XYDrawableAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
23.11XYImageAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
23.12XYLineAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
23.13XYPointerAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
23.14XYPolygonAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
23.15XYShapeAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
23.16XYTextAnnotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
24 Package: org.j free.chart.axis 169
24.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
24.2 Axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
24.3 AxisCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
24.4 AxisLocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
24.5 AxisSpace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
24.6 AxisState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
24.7 CategoryAnchor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
24.8 CategoryAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
24.9 CategoryAxis3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
24.10CategoryLabelPosition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
24.11CategoryLabelPositions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
24.12CategoryLabelWidthType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
24.13CategoryTick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
24.14ColorBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
24.15CompassFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
24.16CyclicNumberAxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183