Maison > Java > javaDidacticiel > Comment redimensionner dynamiquement l'axe du domaine dans CombinedDomainXYPlot de JFreeChart ?

Comment redimensionner dynamiquement l'axe du domaine dans CombinedDomainXYPlot de JFreeChart ?

Linda Hamilton
Libérer: 2024-12-01 12:55:12
original
462 Les gens l'ont consulté

How to Dynamically Rescale the Domain Axis in JFreeChart's CombinedDomainXYPlot?

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();
Copier après la connexion

Considérations

  • Assurez-vous que les fils de discussion initiaux sont pris en compte et que le cadre est correctement emballé.
  • 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);
      }
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal