【问题标题】:CategoryPlot from a JTable - JFreeChart来自 JTable 的 CategoryPlot - JFreeChart
【发布时间】:2016-04-11 13:06:24
【问题描述】:

我必须使用JFreeChart API 实现直方图。这个直方图必须代表这个 JTable 的数据:

所以我有一个包含三列的 JTable:“thea”、“type”、“Number of occurrences”。我的直方图有两个目标:第一个是统计每个 thea 字段的出现次数;二是用不同颜色标记JTable不同类型记录对应的条形。

为了实现我的直方图,我使用了DefaultCategoryDataset

private DefaultCategoryDataset createDataset(ArrayList<String>fieldsOccs) {

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i = 0; i<this.fieldsOccs.size() && i<end; i++) {
    String thea = fieldsOccs.get(i).getFieldName();
    String type = fieldsOccs.get(i).getType();
    int occurrences  = fieldsOccs.get(i).getOccurrences();

    dataset.setValue(occurrences, type, thea);
    }   

return dataset;
}

然后我使用createChart 方法创建图表:

private JFreeChart createChart(DefaultCategoryDataset dataset) {

    JFreeChart chart = ChartFactory.createBarChart(
            "",                                             
            "",                                             //X-axis title
            "",                                             //Y-axis title  
            dataset,                                        //dataset
            PlotOrientation.HORIZONTAL,                     //plot orientation
            true,                                           //show legends      
            true,                                           //use tooltips
            false                                           //generate URLs
            );

    return chart;

}

这是我得到的:

正如您在图片中看到的那样,这并不好看。 x 轴上的值格式不正确。

如何解决这个渲染问题?

--编辑

我有这个问题只是在 JTable 中有更多类型的情况下。例如,如果我的 JTable 是:

只有字符串,对应的直方图很好:

--edit1

你觉得StackedBarChart3D怎么样?我得到这个输出:

【问题讨论】:

    标签: java swing jfreechart


    【解决方案1】:

    我的直方图有两个目标:

    1. 使用ChartFactory.createHistogram()SimpleHistogramDataset,您可能会得到更有吸引力的结果,见here

    2. 要获得多种颜色,请按照建议的here 覆盖自定义XYBarRenderer 中的getItemPaint() 方法。

    【讨论】:

    • 我在 JTable 中有更多类型的地方遇到了这个问题。我用一些数据编辑了我的问题。
    • 也许在您的getItemPaint() 中使用Map&lt;String, Paint&gt; 作为颜色查找表?
    • 我编辑了我的问题。您如何看待使用 StackedBarChart3D 来解决这个问题?
    • 我从未尝试过;这个example 改用半透明颜色。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多