Создание стильных диаграмм в Java, например, с JFreeChart

каков наилучший способ создания великолепных диаграмм на Java? Похоже, что основным вариантом для построения графиков является JFreeChart, но, к сожалению, по умолчанию они выглядят довольно просто.

сравните образец JFreeChart:http://www.jfree.org/jfreechart/images/PriceVolumeDemo1.png с одной из библиотек диаграмм Javascript, например http://www.highcharts.com/demo/spline-symbols/grid или http://people.iola.dk/olau/flot/examples/graph-types.html

javascript выглядят лучше - у них гладкие линии, хороший шрифт по умолчанию и просто в целом выглядят хорошо по сравнению с JFreeChart, который выглядит очень просто.

есть ли библиотека диаграмм, построенная поверх JFreeChart, которая выглядит хорошо по умолчанию, или, может быть, какой-то пример кода, чтобы сделать нормальную диаграмму JFreeChart (например, линейную диаграмму) отличной?

4 ответов


http://www.jfree.org/jfreechart/samples.html

там вы можете найти много образцов (вам нужно загрузить демо-версию JFreeChart (web start)). После некоторой работы с jFreeChart я думал о переезде в EasyChart (следуйте:http://www.objectplanet.com/easycharts/examples.html), но на самом деле он очень похож на jFreeChart. JFreeChart довольно легко написать, что я не знаю о EasyChart.

но согласно вашему вопросу, нет проблем с изменением шрифта, LineRenderer или чего-либо из desing в JFreeChart, поэтому вы можете изменить его, чтобы он выглядел точно так же, как тот, который вы опубликовали из JavaScript.


У меня была та же проблема.

этот код делает JFreeChart похожим на Highcharts (в настоящее время поддерживаются только barcharts). Это может быть легко сделать более эффективным:)

    String fontName = "Lucida Sans";
    JFreeChart chart = ChartFactory.createBarChart(null, "", "", dataset, PlotOrientation.VERTICAL, false, true, false );

    StandardChartTheme theme = (StandardChartTheme)org.jfree.chart.StandardChartTheme.createJFreeTheme();

    theme.setTitlePaint( Color.decode( "#4572a7" ) );
    theme.setExtraLargeFont( new Font(fontName,Font.PLAIN, 16) ); //title
    theme.setLargeFont( new Font(fontName,Font.BOLD, 15)); //axis-title
    theme.setRegularFont( new Font(fontName,Font.PLAIN, 11));
    theme.setRangeGridlinePaint( Color.decode("#C0C0C0"));
    theme.setPlotBackgroundPaint( Color.white );
    theme.setChartBackgroundPaint( Color.white );
    theme.setGridBandPaint( Color.red );
    theme.setAxisOffset( new RectangleInsets(0,0,0,0) );
    theme.setBarPainter(new StandardBarPainter());
    theme.setAxisLabelPaint( Color.decode("#666666")  );
    theme.apply( chart );
    chart.getCategoryPlot().setOutlineVisible( false );
    chart.getCategoryPlot().getRangeAxis().setAxisLineVisible( false );
    chart.getCategoryPlot().getRangeAxis().setTickMarksVisible( false );
    chart.getCategoryPlot().setRangeGridlineStroke( new BasicStroke() );
    chart.getCategoryPlot().getRangeAxis().setTickLabelPaint( Color.decode("#666666") );
    chart.getCategoryPlot().getDomainAxis().setTickLabelPaint( Color.decode("#666666") );
    chart.setTextAntiAlias( true );
    chart.setAntiAlias( true );
    chart.getCategoryPlot().getRenderer().setSeriesPaint( 0, Color.decode( "#4572a7" ));
    BarRenderer rend = (BarRenderer) chart.getCategoryPlot().getRenderer();
    rend.setShadowVisible( true );
    rend.setShadowXOffset( 2 );
    rend.setShadowYOffset( 0 );
    rend.setShadowPaint( Color.decode( "#C0C0C0"));
    rend.setMaximumBarWidth( 0.1);

enter image description here


попробовать XChart. XChart-это легкая Java-библиотека для построения графиков данных, которая будет потенциальной альтернативой JFreeChart. Его внимание сосредоточено на простоте и не имеет всех возможностей, которые есть у JFreeChart, но он предлагает богатый набор функций построения графиков, включая темы для применения различных "скинов" к диаграмме. Вы можете легко создать свою собственную тему, реализовав интерфейс и применив его к диаграмме, позвонив chart.setTheme(myTheme). Банку только ~86 Кбайт в версии 2.0.0 , и у него нет зависимостей. Он лицензирован под Apache 2.0 и размещен на Github. Некоторые скриншоты можно найти здесь. Отказ от ответственности: я ведущий девлопер проекта.

enter image description here


http://javafx.com/about-javafx/

взгляните на JavaFX 2.0