Jsp Jfreechart:是否可以更改条形图的颜色?
是否可以更改条形图的颜色 我编写了一个简单的计数程序 我还想实现一件事:如果计数数大于200,则使用蓝色绘制条。如果没有,请使用黄色来执行此操作 目前,所有条颜色均为红色 那么,我想问一下,有没有可能改变酒吧的颜色 如果是的话,有人能给我一些实现的指导吗 提前谢谢 附件是我的编码:Jsp Jfreechart:是否可以更改条形图的颜色?,jsp,jfreechart,Jsp,Jfreechart,是否可以更改条形图的颜色 我编写了一个简单的计数程序 我还想实现一件事:如果计数数大于200,则使用蓝色绘制条。如果没有,请使用黄色来执行此操作 目前,所有条颜色均为红色 那么,我想问一下,有没有可能改变酒吧的颜色 如果是的话,有人能给我一些实现的指导吗 提前谢谢 附件是我的编码: <%@page contentType="text/html"%> <%@page import="java.io.*" %> <%@page import="java.sql.*" %
<%@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.*" %>
<html>
<body>
<%
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);
}
%>
<img src="/delivery/bar.png" alt="subject Bar Chart" />
</body>
</html>
获取一个句柄,并在其上调用setSeriesPaint(int系列,java.awt.Paint)。魔法在于
例如:
您试图做的是:
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 ;
}
}
然后在调用ChartFactory.createBarChart之后,您可以
final CategoryPlot plot = chart.getCategoryPlot();
CategoryItemRenderer renderer = new CustomRenderer();
plot.setRenderer(renderer);
看看这个链接
/**
* A custom renderer that returns a different color for each item in a single series.
*/
class CustomRenderer extends BarRenderer {
/** The colors. */
private Paint[] colors;
/**
* Creates a new renderer.
*
* @param colors the colors.
*/
public CustomRenderer(final Paint[] colors) {
this.colors = colors;
}
/**
* Returns the paint for an item. Overrides the default behaviour inherited from
* AbstractSeriesRenderer.
*
* @param row the series.
* @param column the category.
*
* @return The item color.
*/
public Paint getItemPaint(final int row, final int column) {
return this.colors[column % this.colors.length];
}
}
此方法不能用于设置系列中条形图的颜色,这是OP想要完成的。改用
/**
* A custom renderer that returns a different color for each item in a single series.
*/
class CustomRenderer extends BarRenderer {
/** The colors. */
private Paint[] colors;
/**
* Creates a new renderer.
*
* @param colors the colors.
*/
public CustomRenderer(final Paint[] colors) {
this.colors = colors;
}
/**
* Returns the paint for an item. Overrides the default behaviour inherited from
* AbstractSeriesRenderer.
*
* @param row the series.
* @param column the category.
*
* @return The item color.
*/
public Paint getItemPaint(final int row, final int column) {
return this.colors[column % this.colors.length];
}
}