2 votes

PlotOrientation de BoxAndWhiskerChart JFreeChart

J'ai une question concernant JFreeChart : Est-il possible de modifier le PlotOrientation d'un BoxAndWhiskerChart à l'horizontale ? J'ai un histogramme, et je veux ajouter un BoxAndWhiskerChart ci-dessous. J'ai besoin qu'il soit horizontal pour pouvoir utiliser la même échelle d'axe. J'ai essayé de changer l'orientation dans le Plot y ChartPanel .

the look of my JFrame

1voto

Catalina Island Points 3586

Vous pouvez modifier les PlotOrientation sur le CategoryPlot comme ceci.

CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setOrientation(PlotOrientation.HORIZONTAL);

1voto

trashgod Points 136305

L'île de Catalina montre la bonne façon de changer le nom de l'entreprise. PlotOrientation aquí mais il se peut que vous rencontriez un bogue dans l'application BoxAndWhiskerRenderer ci-dessous pour les PlotOrientation.HORIZONTAL . Notez la ligne tronquée sur la moustache inférieure.

Original image

Le problème est le suivant aquí en drawHorizontalItem() :

g2.draw(new Line2D.Double(xxMin, yymid - halfW, xxMin, yy + halfW));

qui devrait être la suivante :

g2.draw(new Line2D.Double(xxMin, yymid - halfW, xxMin, yymid + halfW));

Updated image

Code tel que testé :

import java.awt.Dimension;
import java.awt.EventQueue;
import java.util.Arrays;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.statistics.DefaultBoxAndWhiskerCategoryDataset;

/**
 * @see https://stackoverflow.com/a/38407595/230513
 */
public class BoxPlot {

    private void display() {
        JFrame f = new JFrame("BoxPlot");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        DefaultBoxAndWhiskerCategoryDataset data = new DefaultBoxAndWhiskerCategoryDataset();
        data.add(Arrays.asList(30, 36, 46, 55, 65, 76, 81, 80, 71, 59, 44, 34), "Planet", "Endor");
        JFreeChart chart = ChartFactory.createBoxAndWhiskerChart(
            "Box and Whisker Chart", "Planet", "Temperature", data, false);
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        plot.setOrientation(PlotOrientation.HORIZONTAL);
        f.add(new ChartPanel(chart) {

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(500, 300);
            }
        });
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new BoxPlot()::display);
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X