2013-06-07 2 views
5

Я пытаюсь построить LineChart с использованием DefaultCategoryDataset, и проблема, с которой я столкнулся, - это , когда я пытаюсь построить нулевое значение между двумя значениями, либо соединение между двумя точками (т. е. линия, соединяющая две точки, не появляется), иначе мне нужно пропустить нулевое значение (путем выполнения проверки нуля в каждой точке в DataSet), чтобы связать две другие точки, что приводит к оси x точка не получается на моем графике.Избегайте нулевого в наборе данных для линейной диаграммы

Например:, если у меня Unit1, UNIT2, Unit3 на оси х и некоторых значений, скажем, 10, 20, 30 для каждого, он работает нормально, и участки наклонную линию. Но вместо 20 в Unit2, если я устанавливаю нуль, я получаю только две точки, помеченные на моем графике, без линии, соединяющей эти две точки.

Чтобы получить линию, я должен пропустить точку Unit2 с моей оси x. Но я хочу, чтобы я подключил Unit1 к Unit3, не пропустив Unit2 (и его значение остается нулевым), я не хочу строить вместо null.

Есть ли способ сделать это?

ответ

1

Вы можете использовать два почти идентичных набора данных, но два средства визуализации.

Первый набор данных должен содержать все данные, включая null -значения. Настройте рендерер для этого набора данных только для рисования фигур (но без строк). В итоге вы получите форму для каждого datapoint, который не является «null».

Второй набор данных должен содержать только данные, которые не являются null. Настройте другой рендер для этого набора данных, чтобы рисовать линии (но без фигур). Вы получите строку, которая просто пропускает null-datapoint, но непрерывна.

Код для этого может быть так:

// create your chart here... 

// configure first renderer 
LineAndShapeRenderer renderer = LineAndShapeRenderer) plot.getRenderer(); 
renderer.setBaseShapesVisible(true); 
renderer.setBaseLinesVisible(false); 

// configure second renderer 
LineAndShapeRenderer renderer2 = new LineAndShapeRenderer(true, false); 
plot.setDataset(1, dataset2); 
plot.setRenderer(1, renderer2); 

НТН,
- мартин

+0

Это не является хорошим решением, если вы хотите использовать легенду диаграммы. Затем он покажет элемент легенды для каждой из двух строк. – searchengine27

Смежные вопросы