Jfreechart: Is it possible to change the bar color? <%@page contentType="text/html"%> <%@page import="java.io.*" %> <%@page import="java.sql.*" %> <%@page import="org.jfree.data.category.*" %> <%@page import="org.jfree.chart.*" %> <%@page import="org.jfree.chart.plot.*" %>
<% DefaultCategoryDataset dataset = new DefaultCategoryDataset(); try { Class.forName("com.mysql.jdbc.Driver"); java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/delivery","root","root"); Statement sta = con.createStatement(); ResultSet res = sta.executeQuery("SELECT inventory, subject from statistics"); int count; String subject; while (res.next()) { count = res.getInt("inventory"); subject = res.getString("subject"); dataset.addValue(count,"enrollment count statistics", subject); } } catch (Exception e) { System.err.println(e.getMessage()); } JFreeChart bar = ChartFactory.createBarChart("Enrollment Chart", "subject","Count",dataset, PlotOrientation.HORIZONTAL,true, false, false); //BarRenderer renderer = (BarRenderer) bar.getCategoryPlot().getRenderer(); String fileName = "/bar.png"; String file = application.getRealPath("/") + fileName; try { FileOutputStream fileOut = new FileOutputStream(file); ChartUtilities.writeChartAsPNG(fileOut, bar, 300, 300); } catch (IOException e) { out.print(e); } %>
Plot plot = bar.getPlot();
BarRenderer barRenderer = (BarRenderer)plot.getRenderer();
barRenderer.setSeriesPaint(0, Color.gray);
class CustomRenderer extends BarRenderer
{
public CustomRenderer()
{
}
public Paint getItemPaint(final int row, final int column)
{
// returns color depending on y coordinate.
return (row > 200) ? Color.blue : Color.yellow ;
}
}
final CategoryPlot plot = chart.getCategoryPlot();
CategoryItemRenderer renderer = new CustomRenderer();
plot.setRenderer(renderer);