http://jexp.ru/index.php?title=Java/Chart/XY_Step_Area_Chart&feed=atom&action=history
Java/Chart/XY Step Area Chart - История изменений
2024-03-28T15:00:34Z
История изменений этой страницы в вики
MediaWiki 1.30.0
http://jexp.ru/index.php?title=Java/Chart/XY_Step_Area_Chart&diff=8007&oldid=prev
Admin: 1 версия
2010-06-01T06:52:14Z
<p>1 версия</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr style="vertical-align: top;" lang="ru">
<td colspan="1" style="background-color: white; color:black; text-align: center;">← Предыдущая</td>
<td colspan="1" style="background-color: white; color:black; text-align: center;">Версия 06:52, 1 июня 2010</td>
</tr><tr><td colspan="2" style="text-align: center;" lang="ru"><div class="mw-diff-empty">(нет различий)</div>
</td></tr></table>
Admin
http://jexp.ru/index.php?title=Java/Chart/XY_Step_Area_Chart&diff=8006&oldid=prev
в 18:01, 31 мая 2010
2010-05-31T18:01:45Z
<p></p>
<p><b>Новая страница</b></p><div>== JFreeChart: XY Step Area Chart Demo ==<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!-- start source code --><br />
<br />
<source lang="java"><br />
/* ===========================================================<br />
* JFreeChart : a free chart library for the Java(tm) platform<br />
* ===========================================================<br />
*<br />
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.<br />
*<br />
* Project Info: http://www.jfree.org/jfreechart/index.html<br />
*<br />
* This library is free software; you can redistribute it and/or modify it under the terms<br />
* of the GNU Lesser General Public License as published by the Free Software Foundation;<br />
* either version 2.1 of the License, or (at your option) any later version.<br />
*<br />
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;<br />
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
* See the GNU Lesser General Public License for more details.<br />
*<br />
* You should have received a copy of the GNU Lesser General Public License along with this<br />
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,<br />
* Boston, MA 02111-1307, USA.<br />
*<br />
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. <br />
* in the United States and other countries.]<br />
*<br />
* ------------------------<br />
* XYStepAreaChartDemo.java<br />
* ------------------------<br />
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.<br />
*<br />
* Original Author: Matthias Rose (for Ablay & Fodi GmbH);<br />
* Contributor(s): David Gilbert (for Object Refinery Limited);<br />
*<br />
* $Id: XYStepAreaChartDemo.java,v 1.12 2004/04/26 19:12:04 taqua Exp $<br />
*<br />
* Changes<br />
* -------<br />
* 26-Sep-2003 : Copied XYAreaChartDemo --> XYStepAreaChartDemo<br />
* and adapted to test XYStepAreaRenderer (MR);<br />
*<br />
*/<br />
package org.jfree.chart.demo;<br />
import java.awt.BasicStroke;<br />
import java.awt.BorderLayout;<br />
import java.awt.Color;<br />
import java.awt.event.ActionEvent;<br />
import java.awt.event.ActionListener;<br />
import javax.swing.JCheckBox;<br />
import javax.swing.JComboBox;<br />
import javax.swing.JLabel;<br />
import javax.swing.JPanel;<br />
import javax.swing.JTextField;<br />
import org.jfree.chart.ChartFactory;<br />
import org.jfree.chart.ChartPanel;<br />
import org.jfree.chart.JFreeChart;<br />
import org.jfree.chart.plot.Plot;<br />
import org.jfree.chart.plot.PlotOrientation;<br />
import org.jfree.chart.plot.XYPlot;<br />
import org.jfree.chart.renderer.xy.XYStepAreaRenderer;<br />
import org.jfree.data.xy.XYDataset;<br />
import org.jfree.data.xy.XYSeries;<br />
import org.jfree.data.xy.XYSeriesCollection;<br />
import org.jfree.ui.ApplicationFrame;<br />
import org.jfree.ui.RefineryUtilities;<br />
/**<br />
* A simple demonstration application showing how to create a step area chart.<br />
*<br />
* @author Matthias Rose<br />
*/<br />
public class XYStepAreaChartDemo extends ApplicationFrame implements ActionListener {<br />
/** Vertical orientation. */<br />
private static final String ORIENT_VERT = "Plot vertical";<br />
<br />
/** Horizontal orientation. */<br />
private static final String ORIENT_HORIZ = "Plot horizontal";<br />
/** Problem data. */<br />
private static final Object[][] TEST_DATA = {<br />
// domain values, range values, may be null?<br />
{new Integer(1), new Integer(500), Boolean.TRUE},<br />
{new Integer(2), new Integer(694)},<br />
{new Integer(3), new Integer(-734)},<br />
{new Integer(4), new Integer(453)},<br />
{new Integer(5), new Integer(500), Boolean.TRUE},<br />
{new Integer(6), new Integer(200)},<br />
{new Integer(7), new Integer(550), Boolean.TRUE},<br />
{new Integer(8), new Integer(-150), Boolean.TRUE},<br />
{new Integer(9), new Integer(232)},<br />
{new Integer(10), new Integer(734)},<br />
{new Integer(11), new Integer(400), Boolean.TRUE},<br />
};<br />
/** The chart panel. */<br />
private ChartPanel chartPanel;<br />
<br />
/** The data series. */<br />
private XYSeries xySeries;<br />
<br />
/** The null values checkbox. */<br />
private JCheckBox nullValuesCheckBox;<br />
/** The outline checkbox. */<br />
private JCheckBox outlineCheckBox;<br />
<br />
/** The range base text field. */<br />
private JTextField rangeBaseTextField;<br />
<br />
/** The orientation combobox. */<br />
private JComboBox orientationComboBox; <br />
<br />
/**<br />
* Creates a new demo.<br />
*<br />
* @param title the frame title.<br />
*/<br />
public XYStepAreaChartDemo(final String title) {<br />
super(title);<br />
this.xySeries = new XYSeries("Some data");<br />
for (int i = 0; i < TEST_DATA.length; i++) {<br />
this.xySeries.add((Integer) TEST_DATA[i][0], (Integer) TEST_DATA[i][1]);<br />
}<br />
final XYSeriesCollection dataset = new XYSeriesCollection(this.xySeries);<br />
<br />
final JFreeChart chart = createChart(dataset);<br />
<br />
this.chartPanel = new ChartPanel(chart);<br />
// allow zooming<br />
// this.chartPanel.setHorizontalZoom(true);<br />
// this.chartPanel.setVerticalZoom(true);<br />
<br />
// size<br />
this.chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));<br />
// make stroke more striking<br />
final Plot plot = this.chartPanel.getChart().getPlot();<br />
plot.setOutlineStroke(new BasicStroke(2));<br />
plot.setOutlinePaint(Color.magenta);<br />
// add some components to make options changable<br />
final JPanel main = new JPanel(new BorderLayout());<br />
final JPanel optionsPanel = new JPanel();<br />
<br />
final String[] options = {ORIENT_VERT, ORIENT_HORIZ};<br />
this.orientationComboBox = new JComboBox(options);<br />
this.orientationComboBox.addActionListener(this);<br />
optionsPanel.add(this.orientationComboBox);<br />
this.outlineCheckBox = new JCheckBox("Outline");<br />
this.outlineCheckBox.addActionListener(this);<br />
optionsPanel.add(this.outlineCheckBox);<br />
optionsPanel.add(new JLabel("Base"));<br />
this.rangeBaseTextField = new JTextField("0", 5);<br />
this.rangeBaseTextField.addActionListener(this);<br />
optionsPanel.add(this.rangeBaseTextField);<br />
this.nullValuesCheckBox = new JCheckBox("NULL values");<br />
this.nullValuesCheckBox.addActionListener(this);<br />
optionsPanel.add(this.nullValuesCheckBox);<br />
main.add(optionsPanel, BorderLayout.SOUTH);<br />
main.add(this.chartPanel);<br />
setContentPane(main);<br />
}<br />
// ****************************************************************************<br />
// * JFREECHART DEVELOPER GUIDE *<br />
// * The JFreeChart Developer Guide, written by David Gilbert, is available *<br />
// * to purchase from Object Refinery Limited: *<br />
// * *<br />
// * http://www.object-refinery.ru/jfreechart/guide.html *<br />
// * *<br />
// * Sales are used to provide funding for the JFreeChart project - please * <br />
// * support us so that we can continue developing free software. *<br />
// ****************************************************************************<br />
<br />
/**<br />
* Creates a chart.<br />
* <br />
* @param dataset the dataset.<br />
* <br />
* @return A chart.<br />
*/<br />
private JFreeChart createChart(final XYDataset dataset) {<br />
<br />
final JFreeChart chart = ChartFactory.createXYStepAreaChart(<br />
"XY Step Area Chart Demo",<br />
"Domain (X)", "Range (Y)",<br />
dataset,<br />
PlotOrientation.VERTICAL,<br />
true, // legend<br />
true, // tool tips<br />
false // URLs<br />
);<br />
<br />
// color<br />
final XYPlot plot = chart.getXYPlot();<br />
plot.getRenderer().setSeriesPaint(0, Color.green);<br />
// fill shapes <br />
final XYStepAreaRenderer rend = (XYStepAreaRenderer) plot.getRenderer();<br />
rend.setShapesFilled(true);<br />
return chart; <br />
}<br />
/**<br />
* Change options according to settings.<br />
* <br />
* @param evt the event.<br />
*/<br />
public void actionPerformed(final ActionEvent evt) {<br />
final Object source = evt.getSource();<br />
if (source == this.nullValuesCheckBox) {<br />
<br />
final boolean withNulls = this.nullValuesCheckBox.isSelected();<br />
for (int i = 0; i < TEST_DATA.length; i++) {<br />
Integer yVal = (Integer) TEST_DATA[i][1];<br />
if (withNulls && TEST_DATA[i].length > 2) {<br />
yVal = null;<br />
}<br />
this.xySeries.getDataItem(i).setY(yVal);<br />
}<br />
<br />
} <br />
else if (source == this.outlineCheckBox) {<br />
final XYPlot plot = (XYPlot) this.chartPanel.getChart().getPlot();<br />
((XYStepAreaRenderer) plot.getRenderer()).setOutline(this.outlineCheckBox.isSelected());<br />
<br />
} <br />
else if (source == this.rangeBaseTextField) {<br />
<br />
final double val = Double.parseDouble(this.rangeBaseTextField.getText());<br />
final XYPlot plot = (XYPlot) this.chartPanel.getChart().getPlot();<br />
final XYStepAreaRenderer rend = (XYStepAreaRenderer) plot.getRenderer();<br />
rend.setRangeBase(val); <br />
} <br />
else if (source == this.orientationComboBox) {<br />
final XYPlot plot = (XYPlot) this.chartPanel.getChart().getPlot();<br />
if (this.orientationComboBox.getSelectedItem() == ORIENT_HORIZ) {<br />
plot.setOrientation(PlotOrientation.HORIZONTAL); <br />
} <br />
else if (this.orientationComboBox.getSelectedItem() == ORIENT_VERT) {<br />
plot.setOrientation(PlotOrientation.VERTICAL); <br />
}<br />
}<br />
this.chartPanel.repaint();<br />
}<br />
/**<br />
* Starting point for the demonstration application.<br />
*<br />
* @param args ignored.<br />
*/<br />
public static void main(final String[] args) {<br />
final XYStepAreaChartDemo demo = new XYStepAreaChartDemo("Step Area XY Chart Demo");<br />
demo.pack();<br />
RefineryUtilities.centerFrameOnScreen(demo);<br />
demo.setVisible(true);<br />
}<br />
}<br />
<br />
<br />
</source><br />
<br />
<br />
<!-- end source code --><br />
<br />
<br />
<br />
<br />
<br />
<br />
== JFreeChart: XY Step Chart Demo ==<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<!-- start source code --><br />
<br />
<source lang="java"><br />
<br />
/* ===========================================================<br />
* JFreeChart : a free chart library for the Java(tm) platform<br />
* ===========================================================<br />
*<br />
* (C) Copyright 2000-2004, by Object Refinery Limited and Contributors.<br />
*<br />
* Project Info: http://www.jfree.org/jfreechart/index.html<br />
*<br />
* This library is free software; you can redistribute it and/or modify it under the terms<br />
* of the GNU Lesser General Public License as published by the Free Software Foundation;<br />
* either version 2.1 of the License, or (at your option) any later version.<br />
*<br />
* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;<br />
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.<br />
* See the GNU Lesser General Public License for more details.<br />
*<br />
* You should have received a copy of the GNU Lesser General Public License along with this<br />
* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,<br />
* Boston, MA 02111-1307, USA.<br />
*<br />
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. <br />
* in the United States and other countries.]<br />
*<br />
* --------------------<br />
* XYStepChartDemo.java<br />
* --------------------<br />
* (C) Copyright 2002-2004, by Roger Studner and Contributors.<br />
*<br />
* Original Author: Roger Studner;<br />
* Contributor(s): David Gilbert (for Object Refinery Limited);<br />
*<br />
* $Id: XYStepChartDemo.java,v 1.13 2004/04/26 19:40:15 taqua Exp $<br />
*<br />
* Changes<br />
* -------<br />
* 13-May-2002 : Version 1, contributed by Roger Studner (DG);<br />
* 11-Oct-2002 : Moved create method to ChartFactory class, and fixed issues reported by<br />
* Checkstyle (DG);<br />
*<br />
*/<br />
package org.jfree.chart.demo;<br />
import java.awt.BasicStroke;<br />
import java.awt.Color;<br />
import org.jfree.chart.ChartFactory;<br />
import org.jfree.chart.ChartFrame;<br />
import org.jfree.chart.JFreeChart;<br />
import org.jfree.chart.plot.PlotOrientation;<br />
import org.jfree.chart.plot.XYPlot;<br />
import org.jfree.data.xy.XYDataset;<br />
import org.jfree.data.xy.XYSeries;<br />
import org.jfree.data.xy.XYSeriesCollection;<br />
import org.jfree.date.DateUtilities;<br />
import org.jfree.ui.RefineryUtilities;<br />
/**<br />
* A demonstration of the {@link org.jfree.chart.renderer.XYStepRenderer} class.<br />
*<br />
* @author Roger Studner<br />
*/<br />
public class XYStepChartDemo {<br />
/** A frame for displaying the chart. */<br />
private ChartFrame frame = null;<br />
/**<br />
* Displays a sample chart in its own frame.<br />
*/<br />
private void displayChart() {<br />
if (this.frame == null) {<br />
// create a default chart based on some sample data...<br />
final String title = "LCACs in use at given time";<br />
final String xAxisLabel = "Time";<br />
final String yAxisLabel = "Number of Transports";<br />
final XYDataset data = createStepXYDataset();<br />
final JFreeChart chart = ChartFactory.createXYStepChart(<br />
title,<br />
xAxisLabel, yAxisLabel,<br />
data,<br />
PlotOrientation.VERTICAL,<br />
true, // legend<br />
true, // tooltips<br />
false // urls<br />
);<br />
// then customise it a little...<br />
chart.setBackgroundPaint(new Color(216, 216, 216));<br />
final XYPlot plot = chart.getXYPlot();<br />
plot.getRenderer().setSeriesStroke(0, new BasicStroke(2.0f));<br />
plot.getRenderer().setSeriesStroke(1, new BasicStroke(2.0f));<br />
<br />
// and present it in a frame...<br />
this.frame = new ChartFrame("Plan Comparison", chart);<br />
this.frame.pack();<br />
RefineryUtilities.positionFrameRandomly(this.frame);<br />
this.frame.setVisible(true);<br />
}<br />
else {<br />
this.frame.setVisible(true);<br />
this.frame.requestFocus();<br />
}<br />
}<br />
/**<br />
* Creates and returns a sample dataset for the XY "Step" chart.<br />
*<br />
* @return the sample dataset.<br />
*/<br />
public static XYDataset createStepXYDataset() {<br />
final int feb = 2;<br />
final XYSeries s1 = new XYSeries("Plan 1", false, true);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 8, 0).getTime(), 0);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 8, 1).getTime(), 2);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 9, 5).getTime(), 4);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 10, 6).getTime(), 4);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 11, 6).getTime(), 5);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 12, 6).getTime(), 3);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 13, 6).getTime(), 6);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 14, 6).getTime(), 6);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 15, 30).getTime(), 2);<br />
s1.add(DateUtilities.createDate(2002, feb, 19, 16, 7).getTime(), 0);<br />
final XYSeries s2 = new XYSeries("Plan 2");<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 8, 40).getTime(), 0);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 8, 45).getTime(), 1);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 9, 0).getTime(), 6);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 10, 6).getTime(), 2);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 10, 45).getTime(), 4);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 12, 0).getTime(), 7);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 13, 0).getTime(), 5);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 14, 6).getTime(), 4);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 15, 15).getTime(), 4);<br />
s2.add(DateUtilities.createDate(2002, feb, 19, 16, 0).getTime(), 0);<br />
final XYSeriesCollection dataset = new XYSeriesCollection();<br />
dataset.addSeries(s1);<br />
dataset.addSeries(s2);<br />
return dataset;<br />
}<br />
// ****************************************************************************<br />
// * JFREECHART DEVELOPER GUIDE *<br />
// * The JFreeChart Developer Guide, written by David Gilbert, is available *<br />
// * to purchase from Object Refinery Limited: *<br />
// * *<br />
// * http://www.object-refinery.ru/jfreechart/guide.html *<br />
// * *<br />
// * Sales are used to provide funding for the JFreeChart project - please * <br />
// * support us so that we can continue developing free software. *<br />
// ****************************************************************************<br />
<br />
/**<br />
* The starting point for the demonstration application.<br />
*<br />
* @param args ignored.<br />
*/<br />
public static void main(final String[] args) {<br />
final XYStepChartDemo demo = new XYStepChartDemo();<br />
demo.displayChart();<br />
}<br />
}<br />
<br />
</source><br />
<br />
<br />
<!-- end source code --></div>