|
From: Gökhan S. <gok...@gm...> - 2009-09-27 20:18:47
|
When I run this as it is, and zoom once the top x-axis ticklabels disappear: http://img2.imageshack.us/img2/5493/zoom1.png After commenting these three lines: #locator = MinuteLocator(interval=1) #locator = SecondLocator(interval=30) #par2.xaxis.set_major_locator(locator) and running I get somewhat nice view after zooms: http://img340.imageshack.us/img340/6632/zoom2.png with a minute discrepancy; resulting with shifts on the top x-labels. Any last thoughts? On Sun, Sep 27, 2009 at 2:12 PM, Jae-Joon Lee <lee...@gm...> wrote: > Here it is. > > -JJ > > On Sun, Sep 27, 2009 at 3:09 PM, Gökhan Sever <gok...@gm...> > wrote: > > JJ, > > > > Could you please re-attach the code? Apparently, it has been forgotten on > > your reply. > > > > Thanks. > > > > On Sun, Sep 27, 2009 at 1:50 PM, Jae-Joon Lee <lee...@gm...> > wrote: > >> > >> Here is the modified version of your code that works for me. > >> > >> 1) If you change trans_aux, you also need to plot your data in an > >> appropriate coordinate. Your original code did not work because you > >> scaled the xaxis of the second axes (par) but you were still plotting > >> the original data, i.e., "time" need to be scaled if you want to plot > >> it on "par". The code below takes slightly different approach. > >> > >> 2) I fount that I was wrong with the factor of 3600. It needs to be > >> 86400, i.e., a day in seconds. Also, The unit must be larger than 1. > >> Again, please take a look how datetime unit works. > >> > >> Regards, > >> > >> -JJ > >> > >> > >> import numpy as np > >> import matplotlib.pyplot as plt > >> import matplotlib.transforms as mtransforms > >> from mpl_toolkits.axes_grid.parasite_axes import SubplotHost > >> > >> > >> # Prepare some random data and time for seconds-from-midnight (sfm) > >> representation > >> ydata1 = np.random.random(100) * 1000 > >> ydata2 = np.ones(100) / 2. > >> time = np.arange(3550, 3650) > >> > >> > >> fig = plt.figure() > >> host = SubplotHost(fig, 111) > >> fig.add_subplot(host) > >> > >> # This is the heart of the example. We have to scale the axes correctly. > >> aux_trans = mtransforms.Affine2D().translate(0., 0.).scale(3600, > >> ydata1.max()) > >> par = host.twin(aux_trans) > >> > >> host.set_xlabel("Time [sfm]") > >> host.set_ylabel("Random Data 1") > >> par.set_ylabel("Random Data 2") > >> par.axis["right"].label.set_visible(True) > >> > >> p1, = host.plot(time, ydata1) > >> p2, = par.plot(time, ydata2) > >> > >> host.axis["left"].label.set_color(p1.get_color()) > >> par.axis["right"].label.set_color(p2.get_color()) > >> > >> host.axis["bottom"].label.set_size(16) > >> host.axis["left"].label.set_size(16) > >> par.axis["right"].label.set_size(16) > >> > >> # Move the title little upwards so it won't overlap with the ticklabels > >> title = plt.title("Double time: SFM and HH:MM:SS", fontsize=18) > >> title.set_position((0.5, 1.05)) > >> > >> plt.show() > >> > >> > >> On Sun, Sep 27, 2009 at 12:32 PM, Gökhan Sever <gok...@gm...> > >> wrote: > >> > Hello, > >> > > >> > As was suggested by Jae-Joon, I have simplified the code for easier > >> > investigation and run. The aim of the script is to have time > represented > >> > on > >> > both bottom and top x-axes, on the bottom in seconds-from-midnight > >> > (SFM), > >> > and the top should show as HH:MM:SS, while there is two different data > >> > source being used for y-axes. The code could be seen here or from > >> > http://code.google.com/p/ccnworks/source/browse/trunk/double_time.py > >> > > >> > Currently something wrong with the scaling, since the right y-axis > data > >> > is > >> > missing on the plotting area. Also, sfm hasn't been converted to > >> > HH:MM:SS. > >> > adding this: par.xaxis.set_major_formatter(DateFormatter('%H:%M:%S')) > >> > doesn't remedy the situation as of yet. > >> > > >> > All comments are welcome. > >> > > >> > ### BEGIN CODE ### > >> > #!/usr/bin/env python > >> > > >> > """ > >> > > >> > Double time representation. Bottom x-axis shows time in > >> > seconds-from-midnight > >> > (sfm) fashion, whereas the top x-axis uses HH:MM:SS representation. > >> > > >> > Initially written by Gokhan Sever with helps from Jae-Joon Lee. > >> > > >> > Written: 2009-09-27 > >> > > >> > """ > >> > > >> > import numpy as np > >> > import matplotlib.pyplot as plt > >> > import matplotlib.transforms as mtransforms > >> > from mpl_toolkits.axes_grid.parasite_axes import SubplotHost > >> > > >> > > >> > # Prepare some random data and time for seconds-from-midnight (sfm) > >> > representation > >> > ydata1 = np.random.random(100) * 1000 > >> > ydata2 = np.ones(100) / 2. > >> > time = np.arange(3550, 3650) > >> > > >> > > >> > fig = plt.figure() > >> > host = SubplotHost(fig, 111) > >> > fig.add_subplot(host) > >> > > >> > # This is the heart of the example. We have to scale the axes > correctly. > >> > aux_trans = mtransforms.Affine2D().translate(0., 0.).scale(3600, > >> > ydata1.max()) > >> > par = host.twin(aux_trans) > >> > > >> > host.set_xlabel("Time [sfm]") > >> > host.set_ylabel("Random Data 1") > >> > par.set_ylabel("Random Data 2") > >> > par.axis["right"].label.set_visible(True) > >> > > >> > p1, = host.plot(time, ydata1) > >> > p2, = par.plot(time, ydata2) > >> > > >> > host.axis["left"].label.set_color(p1.get_color()) > >> > par.axis["right"].label.set_color(p2.get_color()) > >> > > >> > host.axis["bottom"].label.set_size(16) > >> > host.axis["left"].label.set_size(16) > >> > par.axis["right"].label.set_size(16) > >> > > >> > # Move the title little upwards so it won't overlap with the > ticklabels > >> > title = plt.title("Double time: SFM and HH:MM:SS", fontsize=18) > >> > title.set_position((0.5, 1.05)) > >> > > >> > plt.show() > >> > ### END CODE ### > >> > > >> > > >> > -- > >> > Gökhan > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Come build with us! The BlackBerry® Developer Conference in SF, CA > >> > is the only developer event you need to attend this year. Jumpstart > your > >> > developing skills, take BlackBerry mobile applications to market and > >> > stay > >> > ahead of the curve. Join us from November 9-12, 2009. Register > >> > now! > >> > http://p.sf.net/sfu/devconf > >> > _______________________________________________ > >> > Matplotlib-users mailing list > >> > Mat...@li... > >> > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > >> > > >> > > > > > > > > > -- > > Gökhan > > > -- Gökhan |