【问题标题】:Get different series to have the same color让不同的系列有相同的颜色
【发布时间】:2012-03-19 00:51:47
【问题描述】:

我有两个属于同一数据集的 XYSeries。第一个系列只能显示形状,而第二个系列只能显示线条。两者必须具有相同的颜色。有什么办法吗?

提供一段代码以便更好地理解:

XYSeries series = new XYSeries("S1", false); // autosort disabled
    for(int i = 0; i < xValues.length; ++i)
        series.add(xValues[i], yValues[i]);

    XYSeries series1 = new XYSeries("S2", false);
    for(int i = 0; i < xValues.length; ++i)
        series1.add(yValues[i], xValues[i]);

    XYSeriesCollection dataset = new XYSeriesCollection();

    dataset.addSeries(series);

    dataset.addSeries(series1);

    // create a chart with title, axis labels, tooltips and maybe a legend
    JFreeChart chart = ChartFactory.createScatterPlot(title, xLabel, yLabel, dataset, 
            PlotOrientation.VERTICAL, legend, true, false);

    XYPlot plot = (XYPlot) chart.getPlot();
    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();

    renderer.setSeriesLinesVisible(0, true);
    renderer.setSeriesShapesVisible(1, false);
    renderer.setSeriesLinesVisible(1, true);

【问题讨论】:

    标签: java swing user-interface jfreechart


    【解决方案1】:

    基于这个example,我编辑了以下几行以获得下面的图像。

    XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyPlot.getRenderer();
    renderer.setSeriesLinesVisible(1, true);
    renderer.setSeriesShapesVisible(1, false);
    renderer.setSeriesPaint(1, Color.blue);
    

    附录:要获得匹配的颜色对,您可以覆盖getItemPaint(),如herehere 所示。

    【讨论】:

    • Updated 为两个系列使用相同的颜色。
    • 谢谢。不过,我省略了一些东西。在我的图表中可以有很多系列,每个系列都有两个系列。所以每个数据集都有一个颜色,由库自动提供。
    • 你可以覆盖getItemPaint();我已经链接到上面的例子。
    猜你喜欢
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2018-12-27
    • 2020-01-04
    相关资源
    最近更新 更多