/**
* Copyright 2015-2017 Knowm Inc. (http://knowm.org) and contributors.
* Copyright 2011-2015 Xeiam LLC (http://xeiam.com) and contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.knowm.xchart.standalone.issues;
import java.util.Arrays;
import org.knowm.xchart.CategoryChart;
import org.knowm.xchart.CategoryChartBuilder;
import org.knowm.xchart.CategorySeries;
import org.knowm.xchart.CategorySeries.CategorySeriesRenderStyle;
import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart;
/**
* @author timmolter
*/
public class TestForIssue167 implements ExampleChart<CategoryChart> {
public static void main(String[] args) {
ExampleChart<CategoryChart> exampleChart = new TestForIssue167();
CategoryChart chart = exampleChart.getChart();
CategoryChart chart2 = ((TestForIssue167) exampleChart).getChart2();
new SwingWrapper<CategoryChart>(chart).displayChart();
new SwingWrapper<CategoryChart>(chart2).displayChart();
}
@Override
public CategoryChart getChart() {
// Create Chart
CategoryChart chart = new CategoryChartBuilder().width(800).height(600).title("CategorySeriesRenderStyle-bug").xAxisTitle("Year").yAxisTitle("Data").build();
// Customize Chart
chart.getStyler().setLegendVisible(false);
chart.getStyler().setHasAnnotations(true);
chart.getStyler().setOverlapped(true);
// This is the setting that causes troubles. When setting this to .Bar
// it works just fine. Draws negative values but doesn't leave blank to
// nulls.
chart.getStyler().setDefaultSeriesRenderStyle(CategorySeriesRenderStyle.Line);
// Series
String[] years = new String[]{"2000", "2001", "2002", "2003", "2004"};
chart.addSeries("data 1", Arrays.asList(years), Arrays.asList(100.0, 110.0, 120.0, 130.0, 140.0));
chart.addSeries("data 2", Arrays.asList(years), Arrays.asList(50.0, 60.0, 70.0, null, 90.0));
chart.addSeries("data 3", Arrays.asList(years), Arrays.asList(-50.0, -60.0, -70.0, null, -90.0));
chart.addSeries("data 4", Arrays.asList(years), Arrays.asList(-100.0, -110.0, -120.0, -130.0, -140.0));
return chart;
}
public CategoryChart getChart2() {
// Create Chart
CategoryChart chart = new CategoryChartBuilder().width(800).height(600).title("CategorySeriesRenderStyle-bug").xAxisTitle("Year").yAxisTitle("Data").build();
// Customize Chart
chart.getStyler().setLegendVisible(false);
chart.getStyler().setHasAnnotations(true);
chart.getStyler().setOverlapped(true);
// Series
String[] years = new String[]{"2000", "2001", "2002", "2003", "2004"};
CategorySeries data1 = chart.addSeries("data 1", Arrays.asList(years), Arrays.asList(100.0, 110.0, 120.0, 130.0, 140.0));
CategorySeries data2 = chart.addSeries("data 2", Arrays.asList(years), Arrays.asList(50.0, 60.0, 70.0, null, 90.0));
CategorySeries data3 = chart.addSeries("data 3", Arrays.asList(years), Arrays.asList(-50.0, -60.0, -70.0, null, -90.0));
CategorySeries data4 = chart.addSeries("data 4", Arrays.asList(years), Arrays.asList(-100.0, -110.0, -120.0, -130.0, -140.0));
// Now rendering is set individually to line per series. Draws nulls but
// all negatives are drawn as zero.
data1.setChartCategorySeriesRenderStyle(CategorySeriesRenderStyle.Line);
data2.setChartCategorySeriesRenderStyle(CategorySeriesRenderStyle.Line);
data3.setChartCategorySeriesRenderStyle(CategorySeriesRenderStyle.Line);
data4.setChartCategorySeriesRenderStyle(CategorySeriesRenderStyle.Line);
return chart;
}
}