Hi matplotlib users!
Did someone solve the problem of use fig.autofmt_xdate() function with SubplotHost object? I googled for it and I found this question only here, without solution. Is there a bug? Anyone knows someway to solve this? Thank you, []'s Rodrigo Batista David GUERINEAU wrote: > > Hi matplotlib_users ! > > I'm David from Berlin, and believe I'm experiencing some problem with the > SubplotHost module: > > I'm generating graphs from hudge databases of cpu and ethernet statistics, > and I wanted to mix several graphs concerning ethernet statistics in the > same figure, > with time as x axis, and bytes-in, bytes-out, packets-in, packets-out and > number of > collisions as three different y axes, with three different scale. > > I took the inspiration from > > for the x axes and from > > http://matplotlib.sourceforge.net/examples/axes_grid/demo_parasite_axes2.html > for the y axes > > The following code is a synthetic reproduction of the problem I'm > experiencing (it is also attached): > > from matplotlib.dates import date2num > from matplotlib import pyplot > from matplotlib import pylab > from mpl_toolkits.axes_grid.parasite_axes import SubplotHost > from datetime import datetime > > dates = [ 733581.20833333337, 733581.20837962965, 733581.20842592593, > 733581.20847222221, 733581.20851851848, > 733581.20855324075, 733581.20858796302, 733581.2086342593, > 733581.20866898145, 733581.20871527772] > rxB = [054L, 130L, 144L, 54L, 36L, 9L, 35L, 43L, 85L, 43L] > txB = [4L, 9L, 9L, 5L, 4L, 4L, 4L, 5L, 6L, 5L] > rxP = [77, 228, 251, 112, 77, 42, 75, 97, 147, 91] > txP = [61, 177, 188, 90, 61, 40, 64, 76, 113, 77] > col = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] > > ethPlot = pyplot > fig = ethPlot.figure() > host = SubplotHost(fig, 111) > > host.set_ylabel("kB/s") > host.set_xlabel("Time") > > par1 = host.twinx() > par2 = host.twinx() > > par1.set_ylabel("Packets/s") > > par2.axis["right"].set_visible(False) > > offset = 60, 0 > new_axisline = par2.get_grid_helper().new_fixed_axis > par2.axis["right2"] = new_axisline(loc="right", > axes=par2, > offset=offset) > > par2.axis["right2"].label.set_visible(True) > par2.axis["right2"].set_label("Collisions") > > par1.set_ylim(0, 6000) > par2.set_ylim(0, 7000) > > host.axis([ dates[0], ( dates[0] + 0.041 ), -7000, 7000]) > par1.axis([ dates[0], ( dates[0] + 0.041 ), -10000, 10000]) > par2.axis([ dates[0], ( dates[0] + 0.041 ), -700, 700]) > > fig.add_axes(host) > ethPlot.subplots_adjust(right=0.75) > > drawRxByt, = host.plot_date(dates, rxB, 'g', tz=None, xdate=True, > ydate=False, label="kB/s in") > drawTxByt, = host.plot_date(dates, txB, 'b', tz=None, xdate=True, > ydate=False, label="kB/s out") > drawRxPaq, = par1.plot_date(dates, rxP, 'm', tz=None, xdate=True, > ydate=False, label="packets/s in") > drawTxPaq, = par1.plot_date(dates, txP, 'y', tz=None, xdate=True, > ydate=False, label="packets/s out") > drawColls, = par2.plot_date(dates, col, 'r', tz=None, xdate=True, > ydate=False, label="collisions") > > fig.autofmt_xdate() > > host.set_xlabel("Time") > host.set_ylabel("kB/s") > par1.set_ylabel("Packets/s") > > host.legend() > > host.axis["left"].label.set_color(drawRxByt.get_color()) > host.axis["left"].label.set_color(drawTxByt.get_color()) > par1.axis["right"].label.set_color(drawRxPaq.get_color()) > par1.axis["right"].label.set_color(drawtxPaq.get_color()) > par2.axis["right2"].label.set_color(drawColls.get_color()) > > ethPlot.draw() > pylab.savefig( './test.png', dpi=(640/8)) > > > > > Maybe I do something wrong somewhere here, but other scripts that do the > same for a single graphwork like a charm. So it's not a question of > dataType > or something. To compare with a working code, here is the first version of > the fuction that does the job on single graphs without any problem : > > def drawEthGraph(filename, hdates, rxP, txP, rxB, txB, col): > ethPlot = pyplot > fig = ethPlot.figure() > ax = fig.add_subplot(111) > ax.plot_date(hdates, rxP, 'g', None, True, False) > ax.plot_date(hdates, txP, 'b', None, True, False) > ax.plot_date(hdates, rxB, 'g', None, True, False) > ax.plot_date(hdates, txB, 'b', None, True, False) > ax.plot_date(hdates, col, 'r', None, True, False) > ax.axis([ hdates[0], ( hdates[0] + 0.042 ), -7000, 7000]) > ax.grid(True) > fig.autofmt_xdate() > pylab.savefig( filename, dpi=(640/8)) > > > I don't think I understand the whole process of generation, but I thought > at > least at the beginnig I was having a good feeling with this API. > Now I wonder how to go around this. Maybe you'll have an idea :-o > > Best regards > > DvD > > from matplotlib.dates import date2num > from matplotlib import pyplot > from matplotlib import pylab > from mpl_toolkits.axes_grid.parasite_axes import SubplotHost > from datetime import datetime > > dates = [ 733581.20833333337, 733581.20837962965, 733581.20842592593, > 733581.20847222221, 733581.20851851848, > 733581.20855324075, 733581.20858796302, 733581.2086342593, > 733581.20866898145, 733581.20871527772] > rxB = [054L, 130L, 144L, 54L, 36L, 9L, 35L, 43L, 85L, 43L] > txB = [4L, 9L, 9L, 5L, 4L, 4L, 4L, 5L, 6L, 5L] > rxP = [77, 228, 251, 112, 77, 42, 75, 97, 147, 91] > txP = [61, 177, 188, 90, 61, 40, 64, 76, 113, 77] > col = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] > > ethPlot = pyplot > fig = ethPlot.figure() > host = SubplotHost(fig, 111) > > host.set_ylabel("kB/s") > host.set_xlabel("Time") > > par1 = host.twinx() > par2 = host.twinx() > > par1.set_ylabel("Packets/s") > > par2.axis["right"].set_visible(False) > > offset = 60, 0 > new_axisline = par2.get_grid_helper().new_fixed_axis > par2.axis["right2"] = new_axisline(loc="right", > axes=par2, > offset=offset) > > par2.axis["right2"].label.set_visible(True) > par2.axis["right2"].set_label("Collisions") > > par1.set_ylim(0, 6000) > par2.set_ylim(0, 7000) > > host.axis([ dates[0], ( dates[0] + 0.041 ), -7000, 7000]) > par1.axis([ dates[0], ( dates[0] + 0.041 ), -10000, 10000]) > par2.axis([ dates[0], ( dates[0] + 0.041 ), -700, 700]) > > fig.add_axes(host) > ethPlot.subplots_adjust(right=0.75) > > drawRxByt, = host.plot_date(dates, rxB, 'g', tz=None, xdate=True, > ydate=False, label="kB/s in") > drawTxByt, = host.plot_date(dates, txB, 'b', tz=None, xdate=True, > ydate=False, label="kB/s out") > drawRxPaq, = par1.plot_date(dates, rxP, 'm', tz=None, xdate=True, > ydate=False, label="packets/s in") > drawTxPaq, = par1.plot_date(dates, txP, 'y', tz=None, xdate=True, > ydate=False, label="packets/s out") > drawColls, = par2.plot_date(dates, col, 'r', tz=None, xdate=True, > ydate=False, label="collisions") > > fig.autofmt_xdate() > > host.set_xlabel("Time") > host.set_ylabel("kB/s") > par1.set_ylabel("Packets/s") > > host.legend() > > host.axis["left"].label.set_color(drawRxByt.get_color()) > host.axis["left"].label.set_color(drawTxByt.get_color()) > par1.axis["right"].label.set_color(drawRxPaq.get_color()) > par1.axis["right"].label.set_color(drawtxPaq.get_color()) > par2.axis["right2"].label.set_color(drawColls.get_color()) > > ethPlot.draw() > pylab.savefig( './test.png', dpi=(640/8)) > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > -- View this message in context: http://old.nabble.com/%22Ordinal-must-be-%3E%3D-1%22-with-SuplotHost-and-dates-tp24305444p27144728.html Sent from the matplotlib - users mailing list archive at Nabble.com. ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users