2012-04-03 2 views
1

Я работаю над рабочим столом целый день, пытаясь понять, как получить максимальное значение оси из созданного графика. Вот как он создается:Как получить максимальное значение Y из StackedBarChart (jFreeChart)

final JFreeChart chart = ChartFactory.createStackedBarChart("", "", symbol, dataSet,PlotOrientation.VERTICAL, false, false, false); 

я, вероятно, чтобы получить набор данных из диаграммы, а затем получить максимальное значение по оси от него. Набор данных DefaultCategoryDataset

Вопрос: Как я могу это достичь?

ответ

2

Просто перебирать CategoryDataset

в
CategoryDataset dataset = createDataset(); 
for (int r = 0; r < dataset.getRowCount(); r++) { 
    double max = Double.MIN_VALUE; 
    for (int c = 0; c < dataset.getColumnCount(); c++) { 
     Number number = dataset.getValue(r, c); 
     double value = number == null ? Double.NaN : number.doubleValue(); 
     if (value > max) { 
      max = value; 
     } 
    } 
    System.out.println(dataset.getRowKey(r) + ": " + max); 
} 

Использование example dataset, производит следующий вывод:

 
First: 5.0 
Second: 8.0 
Third: 6.0 
+1

Спасибо! Я хочу просто добавить (для других, таких как я): набор данных допускает нулевые значения, поэтому проверьте, является ли 'dataset.getValue (r, c)' не равным нулю, прежде чем получить его двойное или любое другое значение. – nyxz

+1

@Maistora: Хорошо заметили! Я обновил этот пример; 'Double.NaN' is [_unordered_] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3) и всегда сравнивает' false'. – trashgod

+0

Nice :) Интересное решение. Я не знал о Double.NAN. Спасибо за то, что поделился этим :) – nyxz

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