#395 XYBoxAndWhiskerRenderer doesn't support AutoRange(true)

General (896)

Creating an XYPlot() with a XYBoxAndWhiskerRenderer
does not support AutoRange(true).


  • David Gilbert

    David Gilbert - 2004-10-01

    Logged In: YES

    I'm not entirely sure what you mean by this. Could you post
    a small demo app illustrating the problem?


    Dave Gilbert
    JFreeChart Project Leader

  • David Gilbert

    David Gilbert - 2004-10-01
    • labels: --> General
    • priority: 5 --> 2
    • assigned_to: nobody --> mungady
  • Rudi Mayerhofer

    Rudi Mayerhofer - 2007-02-28

    Logged In: YES
    Originator: NO


    i just ran into this bug as well.
    XYBoxAndWhiskerRenderer does not do the AutoRanging correctly.

    This is because XYBoxAndWhiskerRenderer.findRangeBounds() does not
    honour the min/max outliner values from a BoxAndWhiskerXYDataSet.
    Instead it calls DatasetUtilities.findRangeBounds() which does the
    usual checks on some interfaces and as a last resort iterates over
    all Y Values to determine the range bounds.

    For XYBoxAndWhisker Charts this should iterate over all min/max
    outliner values instead of the y value to determine the correct
    range bounds.



    P.S.: A workaround for this is to extend the BoxAndWhiskerXYDataSet
    to implement IntervalXYDataSet (which is check by DatasetUtilities.findRangeBounds())
    with the following:

    public Number getEndX(int series, int item) {
    return getX(series, item);

    public double getEndXValue\(int series, int item\) \{
        return getXValue\(series, item\);
    public Number getStartX\(int series, int item\) \{
        return getX\(series, item\);
    public double getStartXValue\(int series, int item\) \{
        return getXValue\(series, item\);
    public Number getStartY\(int series, int item\) \{
        return getMinOutlier\(series, item\);
    public double getStartYValue\(int series, int item\) \{
        return getStartY\(series, item\).doubleValue\(\);
    public Number getEndY\(int series, int item\) \{
        return getMaxOutlier\(series, item\);
    public double getEndYValue\(int series, int item\) \{
        return getEndY\(series, item\).doubleValue\(\);
  • David Gilbert

    David Gilbert - 2007-03-05
    • priority: 2 --> 7
  • David Gilbert

    David Gilbert - 2007-03-05

    Logged In: YES
    Originator: NO

    OK, now I understand. I'll take a look...


Log in to post a comment.

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks