【问题标题】:Width of the bar in JfreechartJfreechart中条的宽度
【发布时间】:2010-12-30 17:51:21
【问题描述】:

有没有办法调整条形图中条形的宽度?

我使用以下代码创建图表。

final JFreeChart chart = ChartFactory.createBarChart("Report", // chart title
                "Date", // domain axis label
                "Number", // range axis label
                dataset, // data
                PlotOrientation.VERTICAL, // orientation
                true, // include legend
                true, // tooltips?
                false // URLs?
                );  

【问题讨论】:

    标签: java jfreechart bar-chart


    【解决方案1】:

    根据 Dave Gilbert(JFreeChart 项目负责人)的说法

    条的宽度是自动的 计算并将取决于 图表或绘图宽度和数量 数据集中的项目。

    查看讨论here

    【讨论】:

      【解决方案2】:

      您不能直接指定条形的宽度,但有一些可以更改的属性会影响宽度。您应该看看 lowerMarginupperMargincategoryMargin 由 CategoryAxis 或 BarRenderer 中的 itemMargin 属性定义的属性。

      例如:

          BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
          renderer.setItemMargin(.1);
      

      setItemMargin(double percent) 中指定的双精度值是类别轴总长度的百分比,将用于同一类别中的条之间的空间(默认为 0.2 或 20%)。该值越小,条形越大。

      【讨论】:

        【解决方案3】:

        您还可以设置条的最大宽度。如果您有一个宽图表但偶尔只有一两个数据点并且您不希望单个大粗条占据整个区域,这将非常有用。

        CategoryPlot categoryPlot = chart.getCategoryPlot();
        BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
        br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
        

        【讨论】:

          【解决方案4】:

          在使用正边距和零没有得到任何结果后,我尝试对itemMargin 使用负数来看看会发生什么。钢筋开始变粗。不过,我不知道是否建议这样做,因为如果没有足够的可用空间,您将得到重叠。

          BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
          renderer.setItemMargin(-2);
          

          【讨论】:

          • 太棒了。我又遇到了同样的问题,我无法用 setMaximumBarWidth 实现任何目标,这成功了。谢谢。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-05
          • 1970-01-01
          相关资源
          最近更新 更多