Как я могу создать столбиковую диаграмму с JFreeChart, который сокращает слишком длинные панели с видимой подсказкой?

Приезжая от студента, я нахожу, что UML имеет очень мало использования. Я нахожу это нелепым, что PROGAMERS должны все же разработать программу, которая автоматически генерирует вещи, которые, как Вы сказали, необходимы. Было бы чрезвычайно просто разработать функцию в Visual Studio, которая могла вытянуть части данных, искать определения, и продукт отвечает на sufficent так, чтобы любой мог посмотреть на него, большой или маленький, и понять программу. Это также усовершенствовало бы его, потому что это возьмет информацию непосредственно из кода для создания информации.

5
задан Glorfindel 20 April 2019 в 01:49
поделиться

2 ответа

Вы можете сделать это с помощью CombinedDomainCategoryPlot или CombinedDomainXYPlot . Установите ось диапазона первого графика на значение отсечения, а затем сделайте что-то подобное со вторым графиком. Затем добавьте их в комбинированный график.

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.CombinedDomainCategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class PlayChart {

    public static void main(String[] args) {


        DefaultCategoryDataset ds = new DefaultCategoryDataset();
        ds.addValue(100, "A", "A");
        ds.addValue(200, "A", "B");
        ds.addValue(400, "A", "C");
        ds.addValue(500, "A", "D");
        ds.addValue(2000, "A", "E");


        JFreeChart bc = ChartFactory.createBarChart("My Bar Chart", "Things", "Counts",  ds, PlotOrientation.VERTICAL, true, false, false);
        JFreeChart bcTop = ChartFactory.createBarChart("My Bar Chart", "Things", "Counts",  ds, PlotOrientation.VERTICAL, true, false, false);

        CombinedDomainCategoryPlot combinedPlot = new CombinedDomainCategoryPlot();
        CategoryPlot topPlot = bcTop.getCategoryPlot();
        NumberAxis topAxis = (NumberAxis) topPlot.getRangeAxis();
        topAxis.setLowerBound(1500);
        topAxis.setUpperBound(2000);

        combinedPlot.add(topPlot, 1);
        CategoryPlot mainPlot = bc.getCategoryPlot();
        combinedPlot.add(mainPlot, 5);

        NumberAxis mainAxis = (NumberAxis) mainPlot.getRangeAxis();;
        mainAxis.setLowerBound(0);
        mainAxis.setUpperBound(600);

        JFreeChart combinedChart = new JFreeChart("Test", combinedPlot);

        ChartFrame cf = new ChartFrame("Test", combinedChart);
        cf.setSize(800, 600);
        cf.setVisible(true);

    }

}

Графики будут иметь одну и ту же ось X. Вам нужно будет поиграть с модулями визуализации, чтобы установить цвета и метки.

удалена неработающая ссылка ImageShack

11
ответ дан 13 December 2019 в 19:31
поделиться

Я не уверен, что вы можете сделать это в JFreeChart.

Решение (что неприятно) состоит в том, чтобы преобразовать диаграмму в изображение, а затем манипулировать им (разрезать и т. Д.) Как изображение, используя RenderedImage , а не как JFreeChart. К сожалению, это будет немного неудобно, поскольку вы, вероятно, захотите рубить в определенном месте на оси Y и т. Д.

0
ответ дан 13 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: