/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingUtilities;
import ilog.views.chart.IlvChart;
import ilog.views.chart.IlvChartLayout;
import ilog.views.chart.IlvChartRenderer;
import ilog.views.chart.IlvColor;
import ilog.views.chart.IlvDataInterval;
import ilog.views.chart.IlvLegend;
import ilog.views.chart.IlvStyle;
import ilog.views.chart.data.IlvDataSource;
import ilog.views.chart.data.IlvDefaultDataSource;
import ilog.views.chart.graphic.IlvDataIndicator;
import ilog.views.chart.graphic.IlvDataLabelAnnotation;
import ilog.views.chart.renderer.IlvHiLoChartRenderer;
import ilog.views.chart.renderer.IlvPolylineChartRenderer;
import ilog.views.util.IlvProductUtil;
public class CustomPolar extends JFrame {
/** Creates new Polar */
public CustomPolar() {
super("Customized Polar Chart");
setDefaultCloseOperation(EXIT_ON_CLOSE);
// creates the initial values array
double[][] temps = { { 10, 8, 12, 19, 10, 14, 13 }, { 16, 12, 20, 15, 18, 24, 26 } };
String[] names = { "Morning Temperatures", "Afternoon Temperatures" };
String[] labels = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
// Create one data source to store the temperatures. No x series since
// the x values are actually the index of the y value in the data set
IlvDataSource tempDataSource = new IlvDefaultDataSource(temps, -1, names, labels);
// Create a new polar chart
IlvChart chart = new IlvChart(IlvChart.POLAR);
chart.setAngleRange(180);
// chart.setStartingAngle(90);
chart.setAntiAliasing(true);
// Create the hilo renderer. This renderer shares the same data source
// than the polyline renderer. This is a clear illustration of the
// model-views design of the chart library : one nodel, two graphical
// representations.
IlvHiLoChartRenderer hiloRenderer = new IlvHiLoChartRenderer();
hiloRenderer.setWidthPercent(40);
hiloRenderer.setDataSource(tempDataSource);
IlvStyle[] styles = { new IlvStyle(Color.black, IlvColor.indianRed),
new IlvStyle(Color.black, IlvColor.cornflowerBlue) };
hiloRenderer.setStyles(styles);
hiloRenderer.getChild(0).setName("Morning/Afternoon Temperatures");
chart.addRenderer(hiloRenderer);
// Create the renderer that will draw the graphical representation of
// the morning and afternoon temperatures as two distinct polylines.
IlvChartRenderer tempRenderer = new IlvPolylineChartRenderer();
tempRenderer.setDataSource(tempDataSource);
chart.addRenderer(tempRenderer);
// Customized the scales
chart.getXScale().setCategory(tempDataSource.getDataSet(0), false);
// chart.getYScale(0).setCrossingValue(0.);
chart.getYScale(0).setStepUnit(new Double(5.), new Double(1.));
chart.getYScale(0).setTitle("Celsius", 0);
chart.getYScale(0).setTitlePlacement(100);
IlvDataInterval inter = new IlvDataInterval(chart.getXScale().getStepsDefinition().previousStep(5),
chart.getXScale().getStepsDefinition().incrementStep(6));
IlvDataIndicator weInd = new IlvDataIndicator(-1, inter, null);
weInd.setStyle(new IlvStyle(IlvColor.wheat));
chart.addDecoration(weInd);
// Add a label annotation for every data points of the renderer series.
// We want to display the min or max temperature, so we set the
// labelling mode to Y_VALUE_LABEL.
tempRenderer.setDataLabeling(IlvChartRenderer.Y_VALUE_LABEL);
tempRenderer.setAnnotation(new IlvDataLabelAnnotation());
// Adding a legend to the chart. The legend is placed within the
// chart area, at an absolute position. When a legend is added with
// the ABSOLUTE constraint and its moveable property value is true (the
// default value), it can be dragged within the chart. The legend is
// said in "floating" mode.
IlvLegend legend = new IlvLegend();
legend.setLocation(140, 250);
chart.addLegend(legend, IlvChartLayout.ABSOLUTE);
// Add a title to the chart. We use a JLabel initialize with the title
// text and add it to the chart as the header. Note that the IlvChart
// class provides two convenience methods that can be used in this special
// case when you just want to set a label as a header or footer.
// These method are the IlvChart.setHeaderText() and
// IlvChart.setFooterText()
// methods. The lines below could be resume to
// chart.setHeaderText("Temperatures of the week");
JLabel label = new JLabel("Temperatures of the week", JLabel.CENTER);
chart.setHeader(label);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(chart, BorderLayout.CENTER);
setSize(500, 400);
}
public static void main(String[] args) {
// This sample uses JViews Charts features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Charts Deployment license.
IlvProductUtil.DeploymentLicenseRequired(IlvProductUtil.JViews_Charts_Deployment);
SwingUtilities.invokeLater(new Runnable() {
Override
public void run() {
CustomPolar frame = new CustomPolar();
frame.setVisible(true);
}
});
}
}