1
package org.hisp.gtool.charts;
4
import java.awt.image.BufferedImage;
5
import java.io.PrintWriter;
7
import javax.servlet.http.HttpServletRequest;
8
import javax.servlet.http.HttpServletResponse;
9
import javax.servlet.http.HttpSession;
11
import org.jfree.chart.ChartRenderingInfo;
12
import org.jfree.chart.ChartUtilities;
13
import org.jfree.chart.JFreeChart;
14
import org.jfree.chart.axis.CategoryAxis;
15
import org.jfree.chart.axis.CategoryLabelPositions;
16
import org.jfree.chart.axis.NumberAxis;
17
import org.jfree.chart.entity.StandardEntityCollection;
18
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
19
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
20
import org.jfree.chart.plot.CategoryPlot;
21
import org.jfree.chart.plot.CombinedDomainCategoryPlot;
22
import org.jfree.chart.renderer.category.BarRenderer;
23
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
24
import org.jfree.chart.title.TextTitle;
25
import org.jfree.data.category.CategoryDataset;
26
import org.jfree.data.category.DefaultCategoryDataset;
27
import org.jfree.ui.RectangleEdge;
28
import org.jfree.ui.VerticalAlignment;
30
public class CombinedCategoryPlotChart1 {
32
// Data Related Bar Chart
44
// Data Related Line Chart
54
public CombinedCategoryPlotChart1() { }
56
// Function For Creating Dataset for Barchart
57
private DefaultCategoryDataset getDataset()
60
// create the dataset...
61
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
63
for(int i=0;i<series1.length;i++)
65
for(int j=0;j<categories1.length;j++)
67
dataset.addValue(data1[i][j], series1[i], categories1[j]);
75
// Function For Creating Dataset for Linechart
76
private DefaultCategoryDataset getDataset()
78
// create the dataset...
79
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
81
for(int i=0;i<series1.length;i++)
83
for(int j=0;j<categories1.length;j++)
85
dataset.addValue(data1[i][j], series1[i], categories1[j]);
92
public String getChartViewer(HttpServletRequest request, HttpServletResponse response) {
95
final CategoryDataset dataset1 = getDataset();
96
final NumberAxis rangeAxis1 = new NumberAxis(yAxis_Title);
97
rangeAxis1.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
98
rangeAxis1.setUpperMargin(0.15);
99
rangeAxis1.setLowerMargin(0.15);
101
final LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
102
renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
103
renderer1.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
104
renderer1.setItemLabelsVisible(true);
105
final CategoryPlot subplot1 = new CategoryPlot(dataset1, null, rangeAxis1, renderer1);
106
subplot1.setDomainGridlinesVisible(true);
108
final CategoryDataset dataset2 = getDataset();
109
final NumberAxis rangeAxis2 = new NumberAxis(yAxis_Title);
110
rangeAxis2.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
111
rangeAxis2.setUpperMargin(0.30);
112
rangeAxis1.setLowerMargin(0.30);
114
final BarRenderer renderer2 = new BarRenderer();
115
renderer2.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
116
renderer2.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
117
renderer2.setItemLabelsVisible(true);
118
final CategoryPlot subplot2 = new CategoryPlot(dataset2, null, rangeAxis2, renderer2);
119
subplot2.setDomainGridlinesVisible(true);
121
final CategoryAxis domainAxis = new CategoryAxis(xAxis_Title);
122
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
124
final CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
125
plot.add(subplot1, 2);
126
plot.add(subplot2, 1);
131
final JFreeChart chart = new JFreeChart(
133
new Font("SansSerif", Font.BOLD, 12),
139
final TextTitle mainTitle = new TextTitle("Combined Category Plot Chart");
140
mainTitle.setFont(new Font("times", Font.BOLD, 13));
141
mainTitle.setPosition(RectangleEdge.TOP);
142
mainTitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
143
chart.addSubtitle(mainTitle);
146
final TextTitle subtitle = new TextTitle(chartTitle);
147
subtitle.setFont(new Font("times", Font.BOLD, 13));
148
subtitle.setPosition(RectangleEdge.TOP);
149
subtitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
150
chart.addSubtitle(subtitle);
152
// OPTIONAL CUSTOMISATION COMPLETED.
155
ChartRenderingInfo info = null;
156
HttpSession session = request.getSession();
159
//Create RenderingInfo object
160
response.setContentType("text/html");
161
info = new ChartRenderingInfo(new StandardEntityCollection());
162
BufferedImage chartImage = chart.createBufferedImage(800, 500, info);
164
// putting chart as BufferedImage in session,
165
// thus making it available for the image reading action Action.
166
session.setAttribute("chartImage", chartImage);
168
PrintWriter writer = new PrintWriter(response.getWriter());
171
ChartUtilities.writeImageMap(writer,"imageMap",info,true);
177
catch (Exception e) {
178
// handel your exception here
181
String pathInfo = "http://";
182
pathInfo += request.getServerName();
183
int port = request.getServerPort();
184
pathInfo += ":"+String.valueOf(port);
185
pathInfo += request.getContextPath();
186
String chartViewer = pathInfo + "/servlet/ChartViewer";
192
public String getChartTitle() {
196
public void setChartTitle(String chartTitle) {
197
this.chartTitle = chartTitle;
200
public String[] getCategories1() {
204
public void setCategories1(String[] categories1) {
205
this.categories1 = categories1;
209
public double[][] getData1() {
213
public void setData1(double[][] data1) {
217
public String[] getSeries1() {
221
public void setSeries1(String[] series1) {
222
this.series1 = series1;
225
public String getXAxis_Title() {
229
public void setXAxis_Title(String axis_Title) {
230
xAxis_Title = axis_Title;
233
public String getYAxis_Title() {
237
public void setYAxis_Title(String axis_Title) {
238
yAxis_Title = axis_Title;