Penskalaan Semula Paksi Domain dalam CombinedDomainXYPlot
Apabila menggunakan CombinedDomainXYPlot untuk berkongsi paksi domain antara berbilang subplot, ia diperhatikan bahawa julat kepada paksi data berubah manakala paksi domain kekal tidak berubah. Memahami dan menangani isu ini memerlukan pandangan yang lebih dekat pada mekanisme asas plot.
Julat Gabungan untuk Paksi Domain
CombinedDomainXYPlot menetapkan julat maksimum untuk paksi domain kongsi , yang membolehkan perkongsian paksi. Perubahan keterlihatan siri tidak menjejaskan paksi domain kongsi secara langsung. Walau bagaimanapun, mengubah set data mengemas kini paksi domain melalui kaedah configure(). Ini membolehkan paksi julat subplot dikemas kini secara bebas.
Paksi Domain Auto-Kemas Kini
Untuk melaraskan paksi domain kongsi secara automatik, gunakan addSeries() atau removeSeries () dan bukannya setSeriesVisible(). Kaedah ini mencetuskan konfigurasi paksi domain.
Contoh Penyesuaian
Contoh kod di bawah menunjukkan CombinedDomainXYPlot di mana paksi domain dikemas kini dengan memanggil configure() apabila subplot dikemas kini atau siri adalah tersembunyi.
mainPlot.getDomainAxis().configure();
Pertimbangan
Pendekatan yang dicadangkan untuk menogol setAutoRange() boleh digantikan dengan panggilan configure() tunggal, tetapi kesannya mungkin tidak ketara kerana data dan julat maksimum kekal tidak berubah.
public static void init() { XYItemRenderer renderer = new StandardXYItemRenderer(SHAPES_AND_LINES); XYPlot plot1 = new XYPlot( generateData(), null, new NumberAxis("Range 1"), renderer); XYPlot plot2 = new XYPlot( generateData(), null, new NumberAxis("Range 2"), renderer); final CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Domain")); plot.setDomainPannable(true); plot.setRangePannable(true); plot.add(plot1); plot.add(plot2); plot.setOrientation(PlotOrientation.VERTICAL); JFreeChart chart = new JFreeChart( "Combined Plots", JFreeChart.DEFAULT_TITLE_FONT, plot, true); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(800, 500)); JPanel controlPanel = new JPanel(); controlPanel.add(new JButton(new UpdateAction(plot, 0))); controlPanel.add(new JButton(new UpdateAction(plot, 1))); for (int i = 0; i < MAX; i++) { JCheckBox jcb = new JCheckBox(new VisibleAction(renderer, i)); jcb.setSelected(true); renderer.setSeriesVisible(i, true); controlPanel.add(jcb); } JFrame frame = new JFrame("Combined Plot Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(chartPanel, BorderLayout.CENTER); frame.add(controlPanel, BorderLayout.SOUTH); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); }
Atas ialah kandungan terperinci Bagaimana untuk Menskala Semula Domain Axis secara Dinamik dalam CombinedDomainXYPlot JFreeChart?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!