【问题标题】:How does XYLineAndShapeRenderer connect a dataset with a graph?XYLineAndShapeRenderer 如何将数据集与图形连接起来?
【发布时间】:2020-03-31 21:21:28
【问题描述】:

这是一个例子;它像这样设置渲染:

final XYPlot plot = xylineChart.getXYPlot( );
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesPaint( 1 , Color.GREEN );
renderer.setSeriesPaint( 2 , Color.YELLOW );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
plot.setRenderer( renderer ); 

而数据集是这样的:

final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );

那么结果是这样的:

我看不到任何代码给每个数据系列一个唯一的图表,但是结果给出了之前设置的图表的三种数据,比如firefox是红色的,chrome是绿色的。

图表是否按顺序分配?

如果是这样,如果我向数据集添加另一个数据,它将分配哪种颜色?

如果不是,如何将图形与数据连接起来?如果我想给 firefox green 和 chrome red 怎么办?

非常感谢!

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    图表是否按顺序分配?

    XYPlot 使用XYItemRenderer 来绘制绘图上的每个点。”这包括情节XYDataset 中所有系列中的所有点。您的示例数据集包括三个系列,每个系列包含三个点;此外,如您的图像所示,一系列中的每个点都由一条线连接。默认情况下,XYSeries 的顺序中排序,如here 所示。

    如果是这样,如果我向数据集添加另一个数据,它将分配哪种颜色?如果没有,如何将图形与数据连接起来?如果我想给 firefox green 和 chrome red 怎么办?

    没有对setSeriesPaint() 的显式调用,下一个颜色由绘图的DrawingSupplier 提供,讨论了here。选择可能会受到您的用例的影响:例如,如果图表的绘图和图例应以特定方式匹配,则需要自定义 DrawingSupplier,如 herehere 所示。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2020-05-04
    • 2013-05-17
    • 2020-06-29
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    相关资源
    最近更新 更多