IntervalBarRenderer:在栏内显示特定信息

问题描述 投票:0回答:1

DefaultIntervalCategoryDataset
中,我想在条形图内显示间隔范围信息。我想丢弃下图中圈出的信息,只想显示间隔值。

下面是代码。如何只显示区间值?

public class IntervalBarChartTest0 extends ApplicationFrame {
    public IntervalBarChartTest0(String title) {
        super(title);
        JPanel chartPanel = createDemoPanel();
        chartPanel.setPreferredSize(new Dimension(500, 270));
        setContentPane(chartPanel);
    }
    private static DefaultIntervalCategoryDataset createDataset1() {

        Number[] series1_Start = new Number[] {25,50};
        Number[] series1_End = new Number[] {50,75};
        Number[][] starts = new Number[][]{series1_Start};
        Number[][] ends = new Number[][] {series1_End};
        String[]  categoryKeys = {"50th%ile", "90th%ile"};
        String[] seriesKeys = {"Series1"};
        DefaultIntervalCategoryDataset dataset= new DefaultIntervalCategoryDataset(seriesKeys,categoryKeys,starts, ends);
        return dataset;
    }

    private static JFreeChart createChart(DefaultIntervalCategoryDataset dataset) {

        CategoryAxis domainAxis = new CategoryAxis("Percentiles");

        NumberAxis rangeAxis = new NumberAxis("ms1");
        IntervalBarRenderer renderer = new IntervalBarRenderer();
        rendererSettings(renderer);
        CategoryPlot plot = new CategoryPlot(dataset, domainAxis, rangeAxis,renderer);
        JFreeChart chart = new JFreeChart("Percentiles", plot);
        ChartUtilities.applyCurrentTheme(chart);
        return chart;
    }
    private static void rendererSettings(IntervalBarRenderer renderer){
        renderer.setItemLabelFont(new Font("Verdana",Font.PLAIN,8));
        renderer.setBaseItemLabelGenerator(new IntervalCategoryItemLabelGenerator());
        renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE6, TextAnchor.BOTTOM_CENTER));
        renderer.setItemMargin(0.1);
        renderer.setBaseItemLabelsVisible(true);    

    }
    public static JPanel createDemoPanel() {
        JFreeChart chart = createChart(createDataset1());
        return new ChartPanel(chart);
    }

    public static void main(String[] args) {
        JFrame demo = new IntervalBarChartTest0(
                "Testing");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }

}
java swing jfreechart
1个回答
3
投票

这是默认的功能

IntervalCategoryItemLabelGenerator
DEFAULT_LABEL_FORMAT_STRING
指定以下
MesageFormat
值:

`"({0}, {1}) = {3} - {4}"`

含义由

createItemArray()
定义,见here。您可能想要这样的东西,而不是默认的:

renderer.setBaseItemLabelGenerator(
    new IntervalCategoryItemLabelGenerator(
        "{2}", NumberFormat.getNumberInstance()));

© www.soinside.com 2019 - 2024. All rights reserved.