Redimensionnement de l'axe de domaine dans CombinedDomainXYPlot
Lors de l'utilisation d'un CombinedDomainXYPlot pour partager un axe de domaine entre plusieurs sous-parcelles, on observe que les axes de plage s'ajustent à les données changent tandis que l’axe du domaine reste inchangé. Comprendre et résoudre ce problème nécessite un examen plus approfondi des mécanismes sous-jacents de l'intrigue.
Plages combinées pour l'axe de domaine
CombinedDomainXYPlot établit une plage maximale pour l'axe de domaine partagé , qui permet le partage d'axes. Les changements de visibilité des séries n’affectent pas directement l’axe du domaine partagé. Cependant, la modification de l'ensemble de données met à jour l'axe du domaine via la méthode configure(). Cela permet aux axes de plage des sous-parcelles d'être mis à jour indépendamment.
Mise à jour automatique de l'axe du domaine
Pour ajuster automatiquement l'axe du domaine partagé, utilisez addSeries() ou removeSeries () plutôt que setSeriesVisible(). Ces méthodes déclenchent la configuration de l'axe du domaine.
Exemple de personnalisation
L'exemple de code ci-dessous montre un CombinedDomainXYPlot où l'axe du domaine est mis à jour en appelant configure() lorsqu'un la sous-intrigue est mise à jour ou une série est caché.
mainPlot.getDomainAxis().configure();
Considérations
L'approche suggérée consistant à basculer setAutoRange() peut être remplacée par un seul appel configure(), mais l'effet peut ne pas être perceptible car les données et la plage maximale restent inchangé.
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); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!