viewtopic.php?f=3&t=16218&p=46400&hilit ... nes#p46400
viewtopic.php?f=3&t=115913&p=175199&hil ... ap#p175199
I tried those solutions and I the problem still there. Basically I tried to set setRoundXCoordinates to true and extends StackedXYAreaRenderer2.
My problem:
My code:
Code: Select all
public class grafico_overlaid_scriptlet_stackedarea extends JRDefaultScriptlet
{
public grafico_overlaid_scriptlet_stackedarea()
{
}
private static Connection connection = null;
private static String query;
TimeTableXYDataset dataset = new TimeTableXYDataset();
public static void setConnection(Connection conn)
{
connection = conn;
}
public static void setQuery(String valor)
{
query = valor;
}
public void preencherColecao()
{
dataset = new TimeTableXYDataset();
try
{
Statement stm = connection.createStatement();
ResultSet rsLinha = stm.executeQuery(query);
while (rsLinha.next()){
dataset.add(new Day(rsLinha.getDate("data")), rsLinha.getDouble("valor"), rsLinha.getString("categoria"));
}
rsLinha.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
/*
dataset.add(new Day(14, 2, 2007), 87, "Series 1");
dataset.add(new Day(15, 2, 2008), 67, "Series 1");
dataset.add(new Day(16, 2, 2009), 78, "Series 1");
dataset.add(new Day(17, 2, 2010), 55, "Series 1");
dataset.add(new Day(18, 2, 2011), 58, "Series 1");
dataset.add(new Day(19, 2, 2012), 60, "Series 1");
dataset.add(new Day(14, 2, 2007), 45, "Series 2");
dataset.add(new Day(15, 2, 2008), 67, "Series 2");
dataset.add(new Day(16, 2, 2009), 61, "Series 2");
dataset.add(new Day(17, 2, 2010), 58, "Series 2");
dataset.add(new Day(18, 2, 2011), 73, "Series 2");
dataset.add(new Day(19, 2, 2012), 64, "Series 2");*/
}
public void afterReportInit()
throws JRScriptletException
{
preencherColecao();
//Criando o ring
createChart();
}
private void createChart(){
try {
JFreeChart chart = ChartFactory.createStackedXYAreaChart(
null, // chart title
null, // domain axis label
null, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // the plot orientation
true, // legend
true, // tooltips
false // urls
);
chart.removeLegend();
chart.setBackgroundPaint(new Color(255,255,255));
XYPlot plot = (XYPlot) chart.getPlot();
DateAxis dateAxis = new DateAxis("");
plot.setDomainAxis(dateAxis);
dateAxis.setLowerMargin(0.0);
dateAxis.setUpperMargin(0.0);
StackedXYAreaRenderer2 stackedxyarearenderer = (StackedXYAreaRenderer2) plot.getRenderer();
stackedxyarearenderer.setRoundXCoordinates(true);
stackedxyarearenderer.setAutoPopulateSeriesShape(false);
stackedxyarearenderer.setSeriesPaint(0, new Color(179,200,193));
stackedxyarearenderer.setSeriesPaint(1, new Color(0,71,49));
stackedxyarearenderer.setBaseLegendShape(new Rectangle(4, 3, 2, 1));
plot.setRenderer(0, stackedxyarearenderer);
LegendTitle lt = new LegendTitle(plot);
Font font = new Font("Zurich LtCn BT", 0, 8);
Color cor = new Color(0,0,0);
//Legendas
try
{
lt.setItemFont(font);
lt.setItemPaint(cor);
}
catch(Exception e)
{
e.printStackTrace();
}
lt.setVerticalAlignment(VerticalAlignment.CENTER);
lt.setPosition(RectangleEdge.BOTTOM);
lt.setBorder(1, 1, 1, 1);
lt.setPadding(2, 2, 2, 2);
chart.addSubtitle(lt);
dateAxis.setTickLabelFont(font);
dateAxis.setTickLabelPaint(cor);
plot.getRangeAxis().setTickLabelFont(font);
plot.getRangeAxis().setTickLabelPaint(cor);
plot.getRangeAxis().setRange(plot.getRangeAxis().getRange().getLowerBound()*1.10, plot.getRangeAxis().getRange().getUpperBound()*1.10);
//ChartUtilities.applyCurrentTheme(chart);
BufferedImage img = new BufferedImage(260, 180, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
chart.draw(g, new Rectangle2D.Double(0, 0, 260, 180));
g.dispose();
setVariableValue("Chart", new JCommonDrawableRenderer(chart));
} catch (JRScriptletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Color convertToColor(String valor)
{
String rgb[] = valor.split(",");
int r = Integer.parseInt(rgb[0]);
int g = Integer.parseInt(rgb[1]);
int b = Integer.parseInt(rgb[2]);
Color c = new Color(r, g, b);
return c;
}
public class Atributo{
public Atributo(String t, Color c){
texto = t;
rgb = c;
}
public String texto = "";
public Color rgb = null;
}
}