Как XYLineAndShapeRenderer связывает набор данных с графиком? - PullRequest
1 голос
/ 01 апреля 2020

Вот пример; он устанавливает рендер следующим образом:

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 );

Тогда результат будет таким: enter image description here

Я могу Я не вижу кода, который бы присваивал каждому ряду данных уникальный график, но в результате получается три типа данных, которые были установлены ранее, например firefox - красный, chrome - зеленый.

Is график назначен в порядке?

Если да, если я добавлю другие данные в набор данных, какой цвет будет назначен?

Если нет, как связать график с данные? Что делать, если я хочу дать firefox зеленый и chrome красный?

Большое спасибо!

1 Ответ

1 голос
/ 01 апреля 2020

График назначен по порядку?

"XYPlot использует XYItemRenderer для рисования каждой точки на графике". Это включает в себя все точки во всех сериях в сюжете XYDataset. Набор данных вашего примера включает три серии, каждая из которых имеет три точки; Более того, каждая точка в серии соединена линией, как показано на вашем изображении. Порядок в пределах и XYSeries сортируется по умолчанию, как показано здесь .

Если это так, если я добавлю другие данные в набор данных, который цвет будет назначен? Если нет, то как связать график с данными? Что, если я хочу дать firefox зеленый и chrome красный?

При отсутствии явного вызова setSeriesPaint(), следующий цвет предоставляется графиком DrawingSupplier, обсуждается здесь . Выбор может зависеть от вашего варианта использования: например, пользовательский DrawingSupplier гарантирован, если сюжет и легенда диаграммы должны совпадать определенным образом, как показано здесь и здесь .

image

...