J'essaye de tracer plusieurs collections de données sur un seul graphique.Chaco - Obtenir plusieurs séries de données pour utiliser les mêmes axes et les mêmes cartes
Chaque jeu de données peut être représenté par une série x (index) et plusieurs séries y (valeurs). Les plages de séries de données x et y peuvent être différentes dans chaque ensemble de données. Je souhaite que plusieurs de ces ensembles de données s'affichent sur une seule parcelle. Cependant, quand j'ajoute simplement le second objet plot au premier (voir ci-dessous) il fait un deuxième axe pour celui-ci qui est imbriqué dans le tracé.
Je souhaite que les deux tracés partagent le même axe et que les limites de l'axe soient mises à jour pour s'adapter à toutes les données. Quel est le meilleur moyen d'y parvenir? J'ai du mal à trouver des sujets à ce sujet dans la documentation.
Merci pour votre aide. Le code ci-dessous met en évidence mon problème.
# Major library imports
from numpy import linspace
from scipy.special import jn
from chaco.example_support import COLOR_PALETTE
# Enthought library imports
from enable.api import Component, ComponentEditor
from traits.api import HasTraits, Instance
from traitsui.api import Item, Group, View
# Chaco imports
from chaco.api import ArrayPlotData, Plot
from chaco.tools.api import BroadcasterTool, PanTool, ZoomTool
from chaco.api import create_line_plot, add_default_axes
def _create_plot_component():
# Create some x-y data series to plot
x = linspace(-2.0, 10.0, 100)
x2 =linspace(-5.0, 10.0, 100)
pd = ArrayPlotData(index = x)
for i in range(5):
pd.set_data("y" + str(i), jn(i,x))
#slightly different plot data
pd2 = ArrayPlotData(index = x2)
for i in range(5):
pd2.set_data("y" + str(i), 2*jn(i,x2))
# Create some line plots of some of the data
plot1 = Plot(pd)
plot1.plot(("index", "y0", "y1", "y2"), name="j_n, n<3", color="red")
# Tweak some of the plot properties
plot1.title = "My First Line Plot"
plot1.padding = 50
plot1.padding_top = 75
plot1.legend.visible = True
plot2 = Plot(pd2)
plot2.plot(("index", "y0", "y1"), name="j_n, n<3", color="green")
plot1.add(plot2)
# Attach some tools to the plot
broadcaster = BroadcasterTool()
broadcaster.tools.append(PanTool(plot1))
broadcaster.tools.append(PanTool(plot2))
for c in (plot1, plot2):
zoom = ZoomTool(component=c, tool_mode="box", always_on=False)
broadcaster.tools.append(zoom)
plot1.tools.append(broadcaster)
return plot1
# Attributes to use for the plot view.
size=(900,500)
title="Multi-Y plot"
# # Demo class that is used by the demo.py application.
#===============================================================================
class Demo(HasTraits):
plot = Instance(Component)
traits_view = View(
Group(
Item('plot', editor=ComponentEditor(size=size),
show_label=False),
orientation = "vertical"),
resizable=True, title=title,
width=size[0], height=size[1]
)
def _plot_default(self):
return _create_plot_component()
demo = Demo()
if __name__ == "__main__":
demo.configure_traits()
Merci beaucoup. C'est idéal! – user2175850