|
From: Jae-Joon L. <lee...@gm...> - 2011-09-11 15:16:35
|
Just in case, here is a version with "axes_grid1" toolkit. Note that
axes_grid is kind of deprecated.
Regards,
-JJ
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.axes_grid1 as axes_grid1
host = axes_grid1.host_subplot(111)
hplt, = host.plot(np.random.rand(100))
from matplotlib.transforms import Affine2D
transfrom_from_parx_to_host = Affine2D().scale(1000, 1)
parx = host.twin(transfrom_from_parx_to_host)
if 1: # adjust axis postion etc.
parx.axis["right"].toggle(ticklabels=False)
parx.axis["top"].toggle(ticklabels=False)
parx.axis["bottom"].toggle(ticklabels=True)
parx.axis["bottom"].line.set_visible(True)
parx.spines["bottom"].set_position(('outward',20))
plt.show()
On Sat, Sep 10, 2011 at 6:14 AM, Gökhan Sever <gok...@gm...> wrote:
> Hi,
> The code below should create a properly placed 2nd x-axis. You might need to
> adjust the placement of the figure canvas to match into the window.
> import numpy as np
> import matplotlib.pyplot as plt
> from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
> fig = plt.figure(figsize=(10,8))
> host = SubplotHost(fig, 111)
> fig.add_subplot(host)
> parx = host.twiny()
> parx.axis["top"].set_visible(False)
> offset = 0, -50
> new_axisline = parx.get_grid_helper().new_fixed_axis
> parx.axis["bottom"] = new_axisline(loc="bottom", axes=parx, offset=offset)
> parx.axis["bottom"].label.set_visible(True)
> hplt, = host.plot(np.random.rand(100))
> p2, = parx.plot(np.linspace(0,20,100), np.random.rand(100)*5.0,
> color='green')
> plt.show()
>
> There is also another example at:
> http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.html#axisartist-with-parasiteaxes
> Hope this helps.
> On Fri, Sep 9, 2011 at 12:50 PM, Neal Becker <ndb...@gm...> wrote:
>>
>> Neal Becker wrote:
>>
>> > I have a semilog plot. I'd like to add a second x axis (maybe below the
>> > existing one, or else maybe on top of graph). This second x axis is
>> > simply
>> > describing the same existing data, in different units.
>> >
>> > For example imagine a plot of
>> >
>> > x - time in seconds
>> > y - velocity
>> >
>> > x2 - time in minutes
>> >
>> >
>>
>> This almost works:
>> fig = plt.figure()
>> ax = fig.add_subplot(111)
>> ...
>> ax2 = ax.twiny()
>> min_x, max_x = ax.get_xlim()
>> ax2.set_xlim (min_x-1, max_x-1)
>>
>> except the 2nd x axis is on the top, and prints right on top of the title
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Why Cloud-Based Security and Archiving Make Sense
>> Osterman Research conducted this study that outlines how and why cloud
>> computing security and archiving is rapidly being adopted across the IT
>> space for its ease of implementation, lower cost, and increased
>> reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
>> _______________________________________________
>> Matplotlib-users mailing list
>> Mat...@li...
>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
>
> --
> Gökhan
>
> ------------------------------------------------------------------------------
> Why Cloud-Based Security and Archiving Make Sense
> Osterman Research conducted this study that outlines how and why cloud
> computing security and archiving is rapidly being adopted across the IT
> space for its ease of implementation, lower cost, and increased
> reliability. Learn more. http://www.accelacomm.com/jaw/sfnl/114/51425301/
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
|