From where can I get StackedBarChartDemo3.java ??

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
Divya
Posts: 34
Joined: Tue Mar 07, 2006 7:27 am
Location: Kerala,India

From where can I get StackedBarChartDemo3.java ??

Post by Divya » Wed Mar 29, 2006 6:05 am

hello
pls anyone have this demo file??

Divya

koldy
Posts: 12
Joined: Mon Mar 27, 2006 6:43 am
Location: Delhi
Contact:

Post by koldy » Wed Mar 29, 2006 6:31 am

hi divya

check this link,may be it's useful to you

http://www.koders.com/java/fidF65A963B6 ... chartdemo3

Divya
Posts: 34
Joined: Tue Mar 07, 2006 7:27 am
Location: Kerala,India

Post by Divya » Wed Mar 29, 2006 12:04 pm

hi
I tried the example u suggested,but I could not find DemoDatasetFactory and also ExtendedStackedBarRenderer().

Any suggestions??

Divya

koldy
Posts: 12
Joined: Mon Mar 27, 2006 6:43 am
Location: Delhi
Contact:

Post by koldy » Wed Mar 29, 2006 12:15 pm

just click on DemoDatasetFactory in the code and it will search the references,the last result will give u the source code of DemoDatasetFactory class
and in the case of ExtendedStackedBarRenderer
just click on it and the first result will give u the code of ExtendedStackedBarRenderer class.

agohar
Posts: 7
Joined: Tue Mar 28, 2006 4:07 pm

Post by agohar » Wed Mar 29, 2006 12:16 pm

Are you looking for this?

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.text.NumberFormat;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.CategoryItemEntity;
import org.jfree.chart.entity.EntityCollection;
import org.jfree.chart.labels.CategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.CategoryItemRendererState;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.chart.urls.CategoryURLGenerator;
import org.jfree.data.category.CategoryDataset;
import org.jfree.text.TextUtilities;
import org.jfree.ui.TextAnchor;

public class ExtendedStackedBarRenderer extends StackedBarRenderer
{

public ExtendedStackedBarRenderer()
{
showPositiveTotal = true;
showNegativeTotal = true;
totalLabelFont = new Font("SansSerif", 1, 12);
totalFormatter = NumberFormat.getInstance();
}

public NumberFormat getTotalFormatter()
{
return totalFormatter;
}

public void setTotalFormatter(NumberFormat numberformat)
{
if(numberformat == null)
{
throw new IllegalArgumentException("Null format not permitted.");
} else
{
totalFormatter = numberformat;
return;
}
}

public void drawItem(Graphics2D graphics2d, CategoryItemRendererState categoryitemrendererstate, Rectangle2D rectangle2d, CategoryPlot categoryplot, CategoryAxis categoryaxis, ValueAxis valueaxis, CategoryDataset categorydataset,
int i, int j, int k)
{
Number number = categorydataset.getValue(i, j);
if(number == null)
return;
double d = number.doubleValue();
PlotOrientation plotorientation = categoryplot.getOrientation();
double d1 = categoryaxis.getCategoryMiddle(j, getColumnCount(), rectangle2d, categoryplot.getDomainAxisEdge()) - categoryitemrendererstate.getBarWidth() / 2D;
double d2 = 0.0D;
double d3 = 0.0D;
for(int l = 0; l < i; l++)
{
Number number1 = categorydataset.getValue(l, j);
if(number1 == null)
continue;
double d5 = number1.doubleValue();
if(d5 > 0.0D)
d2 += d5;
else
d3 += d5;
}

org.jfree.ui.RectangleEdge rectangleedge = categoryplot.getRangeAxisEdge();
double d4;
double d6;
if(d > 0.0D)
{
d4 = valueaxis.valueToJava2D(d2, rectangle2d, rectangleedge);
d6 = valueaxis.valueToJava2D(d2 + d, rectangle2d, rectangleedge);
} else
{
d4 = valueaxis.valueToJava2D(d3, rectangle2d, rectangleedge);
d6 = valueaxis.valueToJava2D(d3 + d, rectangle2d, rectangleedge);
}
double d7 = Math.min(d4, d6);
double d8 = Math.max(Math.abs(d6 - d4), getMinimumBarLength());
java.awt.geom.Rectangle2D.Double double1 = null;
if(plotorientation == PlotOrientation.HORIZONTAL)
double1 = new java.awt.geom.Rectangle2D.Double(d7, d1, d8, categoryitemrendererstate.getBarWidth());
else
double1 = new java.awt.geom.Rectangle2D.Double(d1, d7, categoryitemrendererstate.getBarWidth(), d8);
java.awt.Paint paint = getItemPaint(i, j);
graphics2d.setPaint(paint);
graphics2d.fill(double1);
if(isDrawBarOutline() && categoryitemrendererstate.getBarWidth() > 3D)
{
graphics2d.setStroke(getItemStroke(i, j));
graphics2d.setPaint(getItemOutlinePaint(i, j));
graphics2d.draw(double1);
}
org.jfree.chart.labels.CategoryItemLabelGenerator categoryitemlabelgenerator = getItemLabelGenerator(i, j);
if(categoryitemlabelgenerator != null && isItemLabelVisible(i, j))
drawItemLabel(graphics2d, categorydataset, i, j, categoryplot, categoryitemlabelgenerator, double1, d < 0.0D);
if(d > 0.0D)
{
if(showPositiveTotal && isLastPositiveItem(categorydataset, i, j))
{
graphics2d.setPaint(Color.black);
graphics2d.setFont(totalLabelFont);
double d9 = calculateSumOfPositiveValuesForCategory(categorydataset, j);
TextUtilities.drawRotatedString(totalFormatter.format(d9), graphics2d, (float)double1.getCenterX(), (float)(double1.getMinY() - 4D), TextAnchor.BOTTOM_CENTER, 0.0D, TextAnchor.BOTTOM_CENTER);
}
} else
if(showNegativeTotal && isLastNegativeItem(categorydataset, i, j))
{
graphics2d.setPaint(Color.black);
graphics2d.setFont(totalLabelFont);
double d10 = calculateSumOfNegativeValuesForCategory(categorydataset, j);
TextUtilities.drawRotatedString(String.valueOf(d10), graphics2d, (float)double1.getCenterX(), (float)(double1.getMaxY() + 4D), TextAnchor.TOP_CENTER, 0.0D, TextAnchor.TOP_CENTER);
}
if(categoryitemrendererstate.getInfo() != null)
{
EntityCollection entitycollection = categoryitemrendererstate.getEntityCollection();
if(entitycollection != null)
{
String s = null;
CategoryToolTipGenerator categorytooltipgenerator = getToolTipGenerator(i, j);
if(categorytooltipgenerator != null)
s = categorytooltipgenerator.generateToolTip(categorydataset, i, j);
String s1 = null;
if(getItemURLGenerator(i, j) != null)
s1 = getItemURLGenerator(i, j).generateURL(categorydataset, i, j);
CategoryItemEntity categoryitementity = new CategoryItemEntity(double1, s, s1, categorydataset, i, categorydataset.getColumnKey(j), j);
entitycollection.add(categoryitementity);
}
}
}

private boolean isLastPositiveItem(CategoryDataset categorydataset, int i, int j)
{
boolean flag = true;
Number number = categorydataset.getValue(i, j);
if(number == null)
return false;
for(int k = i + 1; k < categorydataset.getRowCount(); k++)
{
Number number1 = categorydataset.getValue(k, j);
if(number1 != null)
flag = flag && number1.doubleValue() <= 0.0D;
}

return flag;
}

private boolean isLastNegativeItem(CategoryDataset categorydataset, int i, int j)
{
boolean flag = true;
Number number = categorydataset.getValue(i, j);
if(number == null)
return false;
for(int k = i + 1; k < categorydataset.getRowCount(); k++)
{
Number number1 = categorydataset.getValue(k, j);
if(number1 != null)
flag = flag && number1.doubleValue() >= 0.0D;
}

return flag;
}

private double calculateSumOfPositiveValuesForCategory(CategoryDataset categorydataset, int i)
{
double d = 0.0D;
for(int j = 0; j < categorydataset.getRowCount(); j++)
{
Number number = categorydataset.getValue(j, i);
if(number == null)
continue;
double d1 = number.doubleValue();
if(d1 > 0.0D)
d += d1;
}

return d;
}

private double calculateSumOfNegativeValuesForCategory(CategoryDataset categorydataset, int i)
{
double d = 0.0D;
for(int j = 0; j < categorydataset.getRowCount(); j++)
{
Number number = categorydataset.getValue(j, i);
if(number == null)
continue;
double d1 = number.doubleValue();
if(d1 < 0.0D)
d += d1;
}

return d;
}

private boolean showPositiveTotal;
private boolean showNegativeTotal;
private Font totalLabelFont;
private NumberFormat totalFormatter;
}

Locked