/* * ------------------------------------------------------------------------- * $Id: StackedBar.java,v 1.7 2004/09/01 18:03:17 estewart Exp $ * ------------------------------------------------------------------------- * Copyright (c) 1999 Visual Numerics Inc. All Rights Reserved. * * This software is confidential information which is proprietary to * and a trade secret of Visual Numerics, Inc. Use, duplication or * disclosure is subject to the terms of an appropriate license * agreement. * * VISUAL NUMERICS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. VISUAL * NUMERICS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR * ITS DERIVATIVES. *-------------------------------------------------------------------------- */ package com.imsl.demo.chart; import com.imsl.chart.*; import java.awt.*; import java.applet.Applet; public class StackedBar extends Applet { private Chart chart = null; public void init() { chart = new Chart(this); AxisXY axis = new AxisXY(chart); chart.setFontName("serif"); chart.setFontSize(14); int nStacks = 4; int nGroups = 5; int nItems = 5; double x[] = new double[nItems]; double y[][][] = new double[nStacks][nGroups][nItems]; double dx = 0.5*Math.PI/(x.length-1); for (int iStack = 0; iStack < y.length; iStack++) { for (int jGroup = 0; jGroup < y[iStack].length; jGroup++) { for (int kItem = 0; kItem < y[iStack][jGroup].length; kItem++) { x[kItem] = kItem * dx; y[iStack][jGroup][kItem] = 1.0 + Math.sin(x[iStack]) + Math.exp(0.1*jGroup) +Math.sqrt(2+kItem); } } } Bar bar = new Bar(axis, y); //bar.setBarWidth(0.5*dx); bar.setFillColor(Color.blue); //bar.setFillOutlineColor(Color.red); bar.setFillOutlineType(Bar.FILL_TYPE_SOLID); bar.getBarSet(0).setFillColor(Color.red); bar.getBarSet(1).setFillColor(Color.yellow); bar.getBarSet(2).setFillColor(Color.green); bar.getBarSet(3).setFillColor(Color.blue); // axisX.getMajorTick().setPaint(false); // axisX.getMinorTick().setPaint(false); axis.setBarType(Bar.BAR_TYPE_VERTICAL); //axis.setBarGap(1.0); //bars[0].setFillColor(Color.yellow); //bars[0].setTitle("Yellow widgets"); //bars[1].getBars()[2].setFillColor(Color.green); //bars[1].setTitle("Blue widgets"); //bars[0].setGradient(Color.red, Color.green, Color.green, Color.red); //bars[1].setGradient(Color.white, Color.black, Color.black, Color.white); //chart.getBackground().setGradient(Color.green, Color.blue, Color.blue, Color.blue); String labels[] = {"New York", "\u041f\u0440\u043e\u0435", "Northern\nCalifornia", "Colorado", "New Jersey"}; chart.getChartTitle().setTitle("Sales by Region"); axis.getAxisX().getAxisLabel().setLabels(labels); //axis.getAxisX().getAxisLabel().setTextAngle(90); // axis.getAxisX().getAxisTitle().setTitle("\u5340 Western: \u0041 \u0042 CJK Unified: \u9662 \u4e01 Hanguel: \uace0 \uc218 Hirigana: \u3041 \u306e Katakana: \u30ad \u30f3"); axis.getAxisX().getAxisLabel().setTextAngle(270); axis.getAxisX().getMajorTick().setPaint(true); axis.getAxisX().getMinorTick().setPaint(false); axis.getAxisX().getAxisTitle().setTitle("Russian \u041f\u0440\u043e\u0435\u043a\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438"); axis.getAxisY().getAxisTitle().setTitle("Sales ($million)\nby widget color"); } public void update(Graphics g) { chart.update(g); } public void paint(Graphics g) { chart.paint(g); } public static void main(String argv[]) { StackedBar ex = null; Frame frame = new Frame(); ex = new StackedBar(); frame.add(ex); ex.init(); ex.chart.getLegend().setPaint(true); frame.setSize(new Dimension(400,400)); frame.show(); } }