2011-11-25 16 views
6

¿Cuál es la mejor manera de crear gráficos de gran apariencia en Java? Parece que la opción principal para la creación de gráficos es JFreeChart, pero desafortunadamente, por defecto, parecen bastante simples.Cree gráficos con estilo en Java, por ejemplo, con JFreeChart

comparar una muestra de JFreeChart: http://www.jfree.org/jfreechart/images/PriceVolumeDemo1.png con una de las bibliotecas de gráficos de Javascript, por ejemplo http://www.highcharts.com/demo/spline-symbols/grid o http://people.iola.dk/olau/flot/examples/graph-types.html

Los javascript ven mejor - tienen líneas suaves, fuente agradable por defecto, y en general se ven bien en comparación a JFreeChart que se ve muy claro.

¿Hay una biblioteca de gráficos construida sobre JFreeChart que se ve bien por defecto, o tal vez algún código de muestra para hacer que un gráfico JFreeChart normal (por ejemplo, un gráfico de líneas) se vea bien?

Respuesta

3

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

allí se puede encontrar muchas muestras (es necesario descargar un JFreeChart Demo (inicio web)). Después de trabajar con jFreeChart, estaba pensando en cambiar a EasyChart (seguir: http://www.objectplanet.com/easycharts/examples.html), pero se ve muy similar a jFreeChart en realidad. JFreeChart es bastante fácil de escribir, no sé sobre EasyChart.

Pero de acuerdo con su pregunta, no hay ningún problema para cambiar una fuente, LineRenderer o cualquier cosa del diseño en JFreeChart, por lo que puede modificarlo para que se vea exactamente como el que ha publicado desde JavaScript.

+1

Asumí que era una manera de cambiar la mayor parte del estilo como la fuente y la línea de representación - supongo que estaba esperando un código de ejemplo de realmente grandes gráficos buscando para salvarme de tener que jugar con es demasiado Sin embargo, los gráficos de escaparate en la demostración de inicio web de JFreeChart son un buen comienzo, deberían usar capturas de pantalla de aquellos en su página de muestra. – user1043466

+0

Vea también esta [respuesta] (http://stackoverflow.com/q/7323424/230513), así como ['org.jfree.chart.annotations'] (http://www.jfree.org/jfreechart/ api/javadoc/org/jfree/chart/annotations/package-summary.html). – trashgod

11

que tenía el mismo problema.

Este código hace que JFreeChart se vea como Highcharts (actualmente solo se admiten gráficos de barras). Fácilmente podría ser más eficiente :)

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

9

probar XChart. XChart es una biblioteca ligera de Java para trazar datos que serían una alternativa potencial a JFreeChart. Se centra en la simplicidad y no tiene todas las capacidades que tiene JFreeChart, pero ofrece un amplio conjunto de funciones de gráficos que incluyen Temas para aplicar diferentes "máscaras" a un gráfico. Puede crear fácilmente su propio Tema implementando una interfaz y aplicándolo a un Gráfico llamando al chart.setTheme(myTheme). El archivo jar solo tiene ~ 86 KB a partir de la versión 2.0.0 y no tiene dependencias. Tiene licencia bajo Apache 2.0 y está alojado en Github. Se pueden encontrar algunas capturas de pantalla here. Descargo de responsabilidad: soy el desarrollador principal del proyecto.

enter image description here

+1

Realmente impresionado con xchart. Recomiendo encarecidamente a todos los que necesitan una herramienta gráfica simple. ¡Gracias por tu trabajo! – ruX

Cuestiones relacionadas