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
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users