java JFreeChart 如何使用渲染器来设置不同的绘画



我有一个系列 XYAreaChart

final JFreeChart chart = ChartFactory.createXYAreaChart(
    "",
    "", "Rolling",
    dataset,
    PlotOrientation.VERTICAL,
    false,  // legend
    true,  // tool tips
    false  // URLs
);
final XYPlot plot = chart.getXYPlot();

我想在范围值>0 时将油漆颜色设置为红色,否则将其设置为绿色。这是我能找到的最接近的代码,但我认为它是两个系列的:

plot.setRenderer(new XYDifferenceRenderer(Color.green, Color.red, false));

单个系列需要哪种渲染器?

这也许能帮助你。下面是一个示例,显示了 JFreechart 教程中的基本图表。 我已经在您的示例中添加了渲染器,我的理论是,当您有 1 个系列时,"第二个系列"实际上是 0。 因此,当您应用两个系列渲染器时,如果第一个系列低于 0,则它将成为负色,当它高于 0 时,它将成为正色。

当我打开保存的图表时,负点上有红色,正点上有绿色。 看看是否有帮助:

public class SO{
public static void main(String[] args) {
    // Create a simple XY chart
    XYSeries series = new XYSeries("Gradient logs chopped");
    series.add(1, -7);
    series.add(2, -2);
    series.add(3, 4);
    series.add(4, 7);
    series.add(5, 10);
    // Add the series to your data set
    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(series);
    // Generate the graph
    JFreeChart chart = ChartFactory.createXYLineChart(
    "Logs chopped", // Title
    "Week", // x-axis Label
    "Logs", // y-axis Label
    dataset, // Dataset
    PlotOrientation.VERTICAL, // Plot Orientation
    true, // Show Legend
    true, // Use tooltips
    false // Configure chart to generate URLs?
    );
    //The renderer part
    XYPlot plot = chart.getXYPlot(); 
    XYDifferenceRenderer rend = new XYDifferenceRenderer(Color.GREEN, Color.RED, false);
    rend.setSeriesFillPaint(0, Color.DARK_GRAY);
    rend.setRoundXCoordinates(true);
    plot.setRenderer(rend);
    //The renderer part

    try {
    ChartUtilities.saveChartAsJPEG(new File("D:\Users\user2777005\Desktop\XYchart.jpg"), chart, 500, 300);
    } catch (IOException e) {
    System.err.println("Problem occurred creating chart.");
    }
   }
}

祝你好运!

最新更新