#java #charts #plot #axis-labels
#java #Диаграммы #график #метки оси
Вопрос:
У меня есть график, который я создал с помощью GRAL:
Проблемы, с которыми я сталкиваюсь, связаны с осью. В принципе, я бы хотел, чтобы ось Y запускалась с 0 .. 4 на каждом графике, и я не могу найти способ заставить это поведение. Если я уменьшу масштаб, появятся дополнительные приращения, но я бы хотел, чтобы на незастроенных графиках отображалось 0 .. 4.
Я также пытался использовать setCustomTicks
, но по умолчанию остаются галочки, есть ли способ удалить их и использовать только пользовательские?
Помощь была бы очень признательна!
Код для моего графика:
int[][] seq_data_200 = chunkArray(seq_data, 200);
DataTable[] listData = new DataTable[seq_data_200.length];
for (int i = 0; i < seq_data_200.length; i ){
DataTable data = new DataTable(Integer.class, Integer.class);
for (int j = 0; j < seq_data_200[i].length; j ) {
data.add(j, seq_data_200[i][j]);
}
listData[i] = data;
}
panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
panel.setLayout(new GridLayout(seq_data_200.length,1,20,20));
for (int i = 0; i < listData.length; i ) {
XYPlot plot = new XYPlot(listData[i]);
LineRenderer lines = new DefaultLineRenderer2D();
plot.setLineRenderer(listData[i], lines);
Color color = new Color(0.0f, 0.3f, 1.0f);
plot.getPointRenderer(listData[i]).setColor(color);
plot.getLineRenderer(listData[i]).setColor(color);
double insetsTop = 20.0, insetsLeft = 60.0, insetsBottom = 60.0, insetsRight = 40.0;
plot.setInsets(new Insets2D.Double(insetsTop, insetsLeft, insetsBottom, insetsRight));
plot.getTitle().setText(getTitle(i, sequence));
plot.getAxisRenderer(XYPlot.AXIS_X).setLabel("Bases");
plot.getAxisRenderer(XYPlot.AXIS_X).setCustomTicks(getTicks(i, sequence));
plot.getAxisRenderer(XYPlot.AXIS_Y).setLabel("Number of " nucleo "'s");
plot.getAxisRenderer(XYPlot.AXIS_Y).setMinorTicksVisible(false);
plot.getAxisRenderer(XYPlot.AXIS_Y).setTickSpacing(1);
panel.add(new InteractivePanel(plot), BorderLayout.CENTER);
}
Ответ №1:
Я нашел несколько хакерское исправление, которое работает в промежуточный период:
GRAL определяет высоту оси с помощью DataTable
. Он использует максимальные и минимальные значения таблицы для определения области просмотра.
Итак, если вы добавите две части данных:
DataTable.add(x,minY)
DataTable.add(x,maxY)
На графике будут некоторые ложные данные, но окно просмотра изменит размер до желаемой оси. Поскольку эти точки добавляются в конце, они, как правило, несколько затемняются, и их легко игнорировать.
Ответ №2:
У меня сработал следующий метод:
plot.getAxis(XYPlot.AXIS_X).setRange(0.0, 4.0);
plot.getAxis(XYPlot.AXIS_Y).setRange(0.0, 20.0);