1
package org.hisp.gtool.charts;
3
import java.awt.BasicStroke;
5
import java.awt.image.BufferedImage;
6
import java.io.PrintWriter;
8
import javax.servlet.http.HttpServletRequest;
9
import javax.servlet.http.HttpServletResponse;
10
import javax.servlet.http.HttpSession;
12
import org.jfree.chart.ChartRenderingInfo;
13
import org.jfree.chart.ChartUtilities;
14
import org.jfree.chart.JFreeChart;
15
import org.jfree.chart.axis.CategoryAxis;
16
import org.jfree.chart.axis.CategoryLabelPositions;
17
import org.jfree.chart.axis.NumberAxis;
18
import org.jfree.chart.entity.StandardEntityCollection;
19
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
20
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
21
import org.jfree.chart.plot.CategoryPlot;
22
import org.jfree.chart.plot.DatasetRenderingOrder;
23
import org.jfree.chart.plot.PlotOrientation;
24
import org.jfree.chart.renderer.category.BarRenderer;
25
import org.jfree.chart.renderer.category.CategoryItemRenderer;
26
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
27
import org.jfree.chart.title.TextTitle;
28
import org.jfree.data.category.CategoryDataset;
29
import org.jfree.data.category.DefaultCategoryDataset;
30
import org.jfree.ui.RectangleEdge;
31
import org.jfree.ui.VerticalAlignment;
33
public class OverlaidBarChart2 {
34
// Data Related Bar Chart
45
// Data Related Line Chart
56
public OverlaidBarChart2() { }
58
// Function For Creating Dataset for Barchart
59
private DefaultCategoryDataset getDataset1()
62
// create the dataset...
63
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
65
for(int i=0;i<series1.length;i++)
67
for(int j=0;j<categories1.length;j++)
69
dataset.addValue(data1[i][j], series1[i], categories1[j]);
76
// Function For Creating Dataset for Linechart
77
private DefaultCategoryDataset getDataset2()
80
// create the dataset...
81
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
83
for(int i=0;i<series1.length;i++)
85
series1[i]+="(Target)";
86
for(int j=0;j<categories1.length;j++)
88
dataset.addValue(data2[i][j], series1[i], categories1[j]);
94
public String getChartViewer(HttpServletRequest request, HttpServletResponse response) {
96
final CategoryDataset dataset1 = getDataset1();
98
// create the first plot...
99
final CategoryItemRenderer renderer = new BarRenderer();
100
renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());
101
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
102
renderer.setItemLabelsVisible(true);
104
final CategoryPlot plot = new CategoryPlot();
105
plot.setDataset(dataset1);
106
plot.setRenderer(renderer);
108
plot.setDomainAxis(new CategoryAxis(xAxis_Title));
109
plot.setRangeAxis(new NumberAxis(yAxis_Title));
111
plot.setOrientation(PlotOrientation.HORIZONTAL);
112
plot.setRangeGridlinesVisible(true);
113
plot.setDomainGridlinesVisible(true);
115
// customise the range axis...
116
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
117
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
118
rangeAxis.setAutoRangeIncludesZero(true);
119
rangeAxis.setUpperMargin(0.15);
120
rangeAxis.setLowerMargin(0.15);
122
final CategoryDataset dataset2 = getDataset2();
124
final CategoryItemRenderer renderer2 = new LineAndShapeRenderer();
125
renderer2.setSeriesStroke(0, new BasicStroke(2.0f));
126
renderer2.setSeriesStroke(1, new BasicStroke(2.0f));
127
plot.setDataset(1, dataset2);
128
plot.setRenderer(1, renderer2);
129
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
131
// plot.setBackgroundPaint(Color.lightGray);
132
// plot.setRangeGridlinePaint(Color.white);
134
final JFreeChart chart = new JFreeChart(plot);
135
//chart.setTitle("Overlaid Bar Chart");
136
// chart.setLegend(new StandardLegend());
137
// chart.setBackgroundPaint(Color.white);
140
final TextTitle mainTitle = new TextTitle("Overlaid Bar Chart");
141
mainTitle.setFont(new Font("times", Font.BOLD, 13));
142
mainTitle.setPosition(RectangleEdge.TOP);
143
mainTitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
144
chart.addSubtitle(mainTitle);
147
final TextTitle subtitle = new TextTitle(chartTitle);
148
subtitle.setFont(new Font("times", Font.BOLD, 13));
149
subtitle.setPosition(RectangleEdge.TOP);
150
subtitle.setVerticalAlignment(VerticalAlignment.BOTTOM);
151
chart.addSubtitle(subtitle);
153
final CategoryAxis domainAxis = plot.getDomainAxis();
154
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
156
// OPTIONAL CUSTOMISATION COMPLETED.
159
ChartRenderingInfo info = null;
160
HttpSession session = request.getSession();
163
//Create RenderingInfo object
164
response.setContentType("text/html");
165
info = new ChartRenderingInfo(new StandardEntityCollection());
166
BufferedImage chartImage = chart.createBufferedImage(800, 500, info);
168
// putting chart as BufferedImage in session,
169
// thus making it available for the image reading action Action.
170
session.setAttribute("chartImage", chartImage);
172
PrintWriter writer = new PrintWriter(response.getWriter());
175
ChartUtilities.writeImageMap(writer,"imageMap",info,true);
181
catch (Exception e) {
182
// handel your exception here
185
String pathInfo = "http://";
186
pathInfo += request.getServerName();
187
int port = request.getServerPort();
188
pathInfo += ":"+String.valueOf(port);
189
pathInfo += request.getContextPath();
190
String chartViewer = pathInfo + "/servlet/ChartViewer";
197
public String getChartTitle() {
201
public void setChartTitle(String chartTitle) {
202
this.chartTitle = chartTitle;
205
public String[] getCategories1() {
209
public void setCategories1(String[] categories1) {
210
this.categories1 = categories1;
214
public double[][] getData1() {
218
public void setData1(double[][] data1) {
222
public double[][] getData2() {
226
public void setData2(double[][] data2) {
230
public String[] getSeries1() {
234
public void setSeries1(String[] series1) {
235
this.series1 = series1;
238
public String getXAxis_Title() {
242
public void setXAxis_Title(String axis_Title) {
243
xAxis_Title = axis_Title;
246
public String getYAxis_Title() {
250
public void setYAxis_Title(String axis_Title) {
251
yAxis_Title = axis_Title;