【问题标题】:JFreeChart: How to plot a line graph and a scatter on same chartJFreeChart:如何在同一图表上绘制折线图和散点图
【发布时间】:2013-10-21 18:54:01
【问题描述】:

我有两组数据

int[] x1 = {1,2,3,4,5,6,7,8,9,10};
int[] y1 = {1,2,3,5,6,8,9,10,14,11};

int[] x2 = {1,2,3,4,5,6,7,8,9,10};
int[] y2 = {0,2,3,5,0,8,9,8,14,11};

int[] z2 = {1,2,3,1,2,3,1,2,3,1};

我想将x1,y1 绘制为XYLineChart,然后将x2,y2 绘制为同一图上的散点图。

我还需要 xy,y2 的每个散点为不同的颜色,具体取决于 z2 (1=Color.red, 2=Color.green, 3=Color.blue) 的值

我该怎么做?

到目前为止我有:

JPanel panel_1 = new JPanel();
panel_1.setLayout(new BorderLayout(0, 0));
XYSeriesCollection dataset = new XYSeriesCollection();
XYSeries series1 = new XYSeries("series1");
for(int i=0; i<x1.length; i++){
    series1.add(x1[i],y1[i]);
}
dataset.add(series1);
JFreeChart chart = ChartFactory.createXYLineChart("Title", "x", "y", dataset, PlotOrientation.VERTICAL, false, false, false);
ChartPanel cp = new ChartPanel(chart);
panel_1.add(cp, BorderLayout.CENTER);

这将使折线图排序。我现在需要为x2,y2(使用上述颜色)编写散点图,这是我卡住的地方。

【问题讨论】:

标签: java jfreechart scatter-plot line-plot


【解决方案1】:

createXYLineChart() 方法将创建一个使用XYLineAndShapeRenderer 的图表。因此,从绘图中获取渲染器并将其转换为 XYLineAndShapeRenderer。然后您可以调用方法setSeriesLinesVisible()setSeriesShapesVisible() 来控制每个系列是否为数据项绘制形状和/或线条。这样您就可以使用单个渲染器和数据集,这让事情变得更简单。

根据另一个数据值更改颜色的要求需要更多的工作。您应该继承 XYLineAndShapeRenderer 类并覆盖 getItemPaint(int, int) 方法。在这里,您可以为数据项返回所需的任何颜色。默认实现查看系列索引并返回系列的颜色。您还需要查看项目索引,然后在 z 值表中查找并决定返回什么颜色。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-30
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多