У меня есть два участка.Мне нужно, чтобы они выстроились в линию, потому что на двух графиках есть данные, которые нужно сравнить.Поэтому, когда вы выстраиваете их в ряд, сравнение легко.
Вот изображение двух графиков на данный момент.На картинке есть несколько красных аннотаций.Красные аннотации показывают, что сейчас существует «дельта».«Дельта» относится к смещению двух графиков.
Как сделать так, чтобы два графика точно совпали?
Пока что я добавил ChartChangeListener, чтобы при изменении верхнего графика я мог получить необходимую информацию ... и настроить нижний график.Но я не могу выяснить, «что такое необходимая информация» и как мне ее использовать для изменения нижней диаграммы.
ОБНОВЛЕНИЕ: Комментатор попросил какой-то код.Итак, вот что такое IMO необходимый кусок кода.
public class TmpChartPanel extends JPanel implements ChartChangeListener {
...
public void addComponentsToContainer(IqDataset iqDataset) {
this.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx = 1;
c.weighty = 1;
// Primarily, the main chart
ChartPanel chartPanel = new ChartPanel(createChart(this.seriesCollection1));
c.gridy = 0;
c.gridx = 0;
this.add(chartPanel, c);
// Secondarily, the second plot. TODO: link the two together so that the user sees the data aligned.
chartPanel = new ChartPanel(createHistogramChart(this.data));
c.fill = GridBagConstraints.HORIZONTAL;
c.weighty = 0;
c.gridy = 1;
c.gridx = 0;
this.add(chartPanel, c);
c.fill = GridBagConstraints.BOTH;
c.weighty = 1;
}
public void chartChanged(ChartChangeEvent event) {
// NOTE: event is from the PRIMARY or top chart
/*------ Take the value from the top chart and set the bottom plot ------*/
// this part works
XYPlot plot = (XYPlot)event.getChart().getPlot();
NumberAxis xAxis = (NumberAxis) plot.getDomainAxis();
Range tmp2 = xAxis.getRange();
((XYPlot)this.SECONDARY.getPlot()).getDomainAxis().setRange(tmp2);
/*------ Make it so that the secondary chart plots the same way directly under the primary chart ------*/
// can't figure out...
}
...
}