2015-05-07 2 views
1

У меня есть данные, например. (1,3600), (2,4400), ... (33,15000) Где (1,3000) -> 1 ряд -> 3600 секундЗначок оси JFreeChart в часах

Если положить в диаграмме, ось будет показывать «второе» как число. Я установил код для отображения метки оси в течение 1 часа.

// Create an NumberAxis 
NumberAxis xAxis = new NumberAxis(); 
xAxis.setTickUnit(new NumberTickUnit(3600)); 

// Assign it to the chart 
xyPlot.setDomainAxis(xAxis); 

Так что теперь ось метки: 0 ... 3600 ... 7200 ... 10,800 ...

Как сделать метки оси показывают в часах? (0 ... 1 ... 2 ... 3 ...)

ответ

1

Один из подходов заключается в масштабировании ваших данных на 1000, чтобы представить миллисекунды от epoch. Затем вы можете использовать SimpleDateFormat с подходящим TimeZone, чтобы получить желаемый эффект.

DateAxis axis = new DateAxis("Hour"); 
SimpleDateFormat format = new SimpleDateFormat("H"); 
format.setTimeZone(TimeZone.getTimeZone("GMT")); 
axis.setDateFormatOverride(format); 

image

The часов ограничены между 0 и 23, любая идея, как преодолеть это?

Вы можете поэкспериментировать с другими форматами, например. "D: Н". В качестве альтернативы, масштабируйте на 1/3600 для представления часов и используйте NumberAxis с целыми единицами тика.

NumberAxis axis = new NumberAxis(); 
axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 

image

+0

Спасибо, это работает! –

+0

Один вопрос, часы ограничены только между 0-23, любая идея преодолеть это? –

+0

Я разработал выше. – trashgod

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