[Matplotlib-devel] upgrade from 2.2.2 to 3.0

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

[Matplotlib-devel] upgrade from 2.2.2 to 3.0

Srinivasa Rao
Hi,

I am using anaconda distribution for windows 10, 64bit. I am trying to
upgrade my current version 2.2.2 to 3.0.0. I have created a new environment
for 3.0.0 within the same desktop. When I compare two versions, for some
code I am getting unexpected output using axes_grid1 functions
make_axes_locatable,  ImageGrid and mplot3d toolkit as explained below

1. When I ran the code from Matplotlib Tutorial for axes_grid1, at
https://matplotlib.org/gallery/axes_grid1/scatter_hist_locatable_axes.html
<https://matplotlib.org/gallery/axes_grid1/scatter_hist_locatable_axes.html>  
using 2.2.2 version I am getting expected output as given below
<http://matplotlib.1069221.n5.nabble.com/file/t5188/scatter_hist_222.png>
same code run with 3.0.0 gives this figure
<http://matplotlib.1069221.n5.nabble.com/file/t5188/scatter_hist_300.png>

2. Similarly when I run the code available at
https://matplotlib.org/gallery/axes_grid1/simple_colorbar.html 
2.2.2 version gives expected output as
<http://matplotlib.1069221.n5.nabble.com/file/t5188/colorbar222.png>
but same code run with 3.0.0 gives this output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/colorbar300.png>

3. Finally, the code at
https://matplotlib.org/gallery/axes_grid1/simple_axesgrid.html
when run with 2.2.2 gives expected output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/imagegrid222.png>
with 3.0.0 it gives this output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/imagegrid300.png>

4. with 3D plotting using mplot3d toolkit, output figure size is very small
compared to expected size we get with version 2.2.2. Even when I increase
figsize argument, 3.0.0 does not give output anywhere closer to expected
size. This is true with single plot figure as well as multiple subplots in a
figure. However, except the size rest of the plot is as expected.

Appreciate any help in resolving these issues.







--
Sent from: http://matplotlib.1069221.n5.nabble.com/matplotlib-devel-f28077.html
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: upgrade from 2.2.2 to 3.0

tcaswell
Srinivasa,

Can you try with v3.0.1?

I am a bit confused as the linked webpages are generated with 3.0.0, why are the pages rendering correctly?

Tom


On Tue, Oct 23, 2018 at 11:59 AM Srinivasa Rao <[hidden email]> wrote:
Hi,

I am using anaconda distribution for windows 10, 64bit. I am trying to
upgrade my current version 2.2.2 to 3.0.0. I have created a new environment
for 3.0.0 within the same desktop. When I compare two versions, for some
code I am getting unexpected output using axes_grid1 functions
make_axes_locatable,  ImageGrid and mplot3d toolkit as explained below

1. When I ran the code from Matplotlib Tutorial for axes_grid1, at
https://matplotlib.org/gallery/axes_grid1/scatter_hist_locatable_axes.html
<https://matplotlib.org/gallery/axes_grid1/scatter_hist_locatable_axes.html
using 2.2.2 version I am getting expected output as given below
<http://matplotlib.1069221.n5.nabble.com/file/t5188/scatter_hist_222.png>
same code run with 3.0.0 gives this figure
<http://matplotlib.1069221.n5.nabble.com/file/t5188/scatter_hist_300.png>

2. Similarly when I run the code available at
https://matplotlib.org/gallery/axes_grid1/simple_colorbar.html
2.2.2 version gives expected output as
<http://matplotlib.1069221.n5.nabble.com/file/t5188/colorbar222.png>
but same code run with 3.0.0 gives this output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/colorbar300.png>

3. Finally, the code at
https://matplotlib.org/gallery/axes_grid1/simple_axesgrid.html
when run with 2.2.2 gives expected output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/imagegrid222.png>
with 3.0.0 it gives this output
<http://matplotlib.1069221.n5.nabble.com/file/t5188/imagegrid300.png>

4. with 3D plotting using mplot3d toolkit, output figure size is very small
compared to expected size we get with version 2.2.2. Even when I increase
figsize argument, 3.0.0 does not give output anywhere closer to expected
size. This is true with single plot figure as well as multiple subplots in a
figure. However, except the size rest of the plot is as expected.

Appreciate any help in resolving these issues.







--
Sent from: http://matplotlib.1069221.n5.nabble.com/matplotlib-devel-f28077.html
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel


--
Thomas Caswell
[hidden email]

_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: upgrade from 2.2.2 to 3.0

Srinivasa Rao
Hi Tom,

Yes, I have tried 3.0.1. While it has solved my old problems, it has
introduced a new problem, which was not there with 3.0.0!

Giving below the code followed by error log:

Inserting the image of expected output that comes when we run the same code
with 3.0.0 or earlier version
<http://matplotlib.1069221.n5.nabble.com/file/t5188/output300.png> :

----------------------------------------------------------
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt

plt.figure()
ax1 = host_subplot(111, axes_class=AA.Axes)

ax1.axis["top"].toggle(all=False)           # switch off ticks and tick
labels for the top axis

ax2 = ax1.twinx()
ax3 = ax1.twinx()

new_fixed_axis = ax3.get_grid_helper().new_fixed_axis
ax3.axis["right"] = new_fixed_axis(loc="right",
                                    axes=ax3,
                                    offset=(60, 0))

ax2.axis["right"].toggle(all=True)
ax3.axis["right"].toggle(all=True)

ax1.set_xlabel('Defect Reason Codes')
ax1.set_ylabel('Number of Defects')
ax2.set_ylabel('Cumulative Defects as %')
ax3.set_ylabel('Cumulative Defects Count')

x = [0, 1, 2, 3, 4, 5]
y = [19, 12, 6, 4, 3, 2]
y1 = [41, 67, 80, 89, 96, 100]
y2 = [19, 31, 37, 41, 44, 46]

b = ax1.bar(x, y, label='Number of Defects')
l, = ax2.plot(x, y1, lw=5, label='Cumulative Defects as %', color='b')
l1, = ax3.plot(x, y2, lw=5, label='Cumulative Defects Count', color='g')

ax3.set_ylim(15, 50)

ax1.legend(loc=5)
ax1.set_title('Product Defects - August 2018')

ax1.axis["left"].label.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].label.set_color(l.get_color())
ax3.axis["right"].label.set_color(l1.get_color())

ax1.axis["left"].major_ticks.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticks.set_color(l.get_color())
ax3.axis["right"].major_ticks.set_color(l1.get_color())

ax1.axis["left"].major_ticklabels.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticklabels.set_color(l.get_color())
ax3.axis["right"].major_ticklabels.set_color(l1.get_color())

# setting the color for axis itself is not working in AA
ax2.spines["right"].set_color(l.get_color())  
ax3.spines["right"].set_color(l1.get_color())

ax1.axis[:].major_ticks.set_tick_out(True)
ax2.axis[:].major_ticks.set_tick_out(True)
ax3.axis[:].major_ticks.set_tick_out(True)

plt.show()
--------------
Error Log
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\formatters.py in
__call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
<lambda>(fig)
    242
    243     if 'png' in formats:
--> 244         png_formatter.for_type(Figure, lambda fig: print_figure(fig,
'png', **kwargs))
    245     if 'retina' in formats or 'png2x' in formats:
    246         png_formatter.for_type(Figure, lambda fig:
retina_figure(fig, **kwargs))

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
print_figure(fig, fmt, bbox_inches, **kwargs)
    126
    127     bytes_io = BytesIO()
--> 128     fig.canvas.print_figure(bytes_io, **kw)
    129     data = bytes_io.getvalue()
    130     if fmt == 'svg':

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\backend_bases.py in
print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format,
bbox_inches, **kwargs)
   2051                     bbox_artists = kwargs.pop("bbox_extra_artists",
None)
   2052                     bbox_inches =
self.figure.get_tightbbox(renderer,
-> 2053                             bbox_extra_artists=bbox_artists)
   2054                     pad = kwargs.pop("pad_inches", None)
   2055                     if pad is None:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
get_tightbbox(self, renderer, bbox_extra_artists)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
<genexpr>(.0)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

TypeError: get_tightbbox() got an unexpected keyword argument
'bbox_extra_artists'

<Figure size 432x288 with 1 Axes>




--
Sent from: http://matplotlib.1069221.n5.nabble.com/matplotlib-devel-f28077.html
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: upgrade from 2.2.2 to 3.0

tcaswell
Can you please report that as an issue on github?

Tom

On Mon, Oct 29, 2018 at 2:20 AM Srinivasa Rao <[hidden email]> wrote:
Hi Tom,

Yes, I have tried 3.0.1. While it has solved my old problems, it has
introduced a new problem, which was not there with 3.0.0!

Giving below the code followed by error log:

Inserting the image of expected output that comes when we run the same code
with 3.0.0 or earlier version
<http://matplotlib.1069221.n5.nabble.com/file/t5188/output300.png> :

----------------------------------------------------------
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt

plt.figure()
ax1 = host_subplot(111, axes_class=AA.Axes)

ax1.axis["top"].toggle(all=False)           # switch off ticks and tick
labels for the top axis

ax2 = ax1.twinx()
ax3 = ax1.twinx()

new_fixed_axis = ax3.get_grid_helper().new_fixed_axis
ax3.axis["right"] = new_fixed_axis(loc="right",
                                    axes=ax3,
                                    offset=(60, 0))

ax2.axis["right"].toggle(all=True)
ax3.axis["right"].toggle(all=True)

ax1.set_xlabel('Defect Reason Codes')
ax1.set_ylabel('Number of Defects')
ax2.set_ylabel('Cumulative Defects as %')
ax3.set_ylabel('Cumulative Defects Count')

x = [0, 1, 2, 3, 4, 5]
y = [19, 12, 6, 4, 3, 2]
y1 = [41, 67, 80, 89, 96, 100]
y2 = [19, 31, 37, 41, 44, 46]

b = ax1.bar(x, y, label='Number of Defects')
l, = ax2.plot(x, y1, lw=5, label='Cumulative Defects as %', color='b')
l1, = ax3.plot(x, y2, lw=5, label='Cumulative Defects Count', color='g')

ax3.set_ylim(15, 50)

ax1.legend(loc=5)
ax1.set_title('Product Defects - August 2018')

ax1.axis["left"].label.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].label.set_color(l.get_color())
ax3.axis["right"].label.set_color(l1.get_color())

ax1.axis["left"].major_ticks.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticks.set_color(l.get_color())
ax3.axis["right"].major_ticks.set_color(l1.get_color())

ax1.axis["left"].major_ticklabels.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticklabels.set_color(l.get_color())
ax3.axis["right"].major_ticklabels.set_color(l1.get_color())

# setting the color for axis itself is not working in AA
ax2.spines["right"].set_color(l.get_color())   
ax3.spines["right"].set_color(l1.get_color())

ax1.axis[:].major_ticks.set_tick_out(True)
ax2.axis[:].major_ticks.set_tick_out(True)
ax3.axis[:].major_ticks.set_tick_out(True)

plt.show()
--------------
Error Log
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\formatters.py in
__call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
<lambda>(fig)
    242
    243     if 'png' in formats:
--> 244         png_formatter.for_type(Figure, lambda fig: print_figure(fig,
'png', **kwargs))
    245     if 'retina' in formats or 'png2x' in formats:
    246         png_formatter.for_type(Figure, lambda fig:
retina_figure(fig, **kwargs))

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
print_figure(fig, fmt, bbox_inches, **kwargs)
    126
    127     bytes_io = BytesIO()
--> 128     fig.canvas.print_figure(bytes_io, **kw)
    129     data = bytes_io.getvalue()
    130     if fmt == 'svg':

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\backend_bases.py in
print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format,
bbox_inches, **kwargs)
   2051                     bbox_artists = kwargs.pop("bbox_extra_artists",
None)
   2052                     bbox_inches =
self.figure.get_tightbbox(renderer,
-> 2053                             bbox_extra_artists=bbox_artists)
   2054                     pad = kwargs.pop("pad_inches", None)
   2055                     if pad is None:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
get_tightbbox(self, renderer, bbox_extra_artists)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
<genexpr>(.0)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

TypeError: get_tightbbox() got an unexpected keyword argument
'bbox_extra_artists'

<Figure size 432x288 with 1 Axes>




--
Sent from: http://matplotlib.1069221.n5.nabble.com/matplotlib-devel-f28077.html
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel


--
Thomas Caswell
[hidden email]

_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel
Reply | Threaded
Open this post in threaded view
|

Re: upgrade from 2.2.2 to 3.0

Jody Klymak
This has been reported already and fixed and should be available on 3.0.2.  As a work around until then don’t call tight_layout or use master or v2.2.3.  

As a general issue, axes_grid1 toolbox is poorly tested and may suffer from these instabilities at release.  This despite the fact it’s heavily promoted as the solution to many layout issues online. I would use it with caution.  There are some things it can do that the base library cannot, but....

Thanks.  Jody

Sent from my iPhone

On Oct 29, 2018, at 6:45 AM, Thomas Caswell <[hidden email]> wrote:

Can you please report that as an issue on github?

Tom

On Mon, Oct 29, 2018 at 2:20 AM Srinivasa Rao <[hidden email]> wrote:
Hi Tom,

Yes, I have tried 3.0.1. While it has solved my old problems, it has
introduced a new problem, which was not there with 3.0.0!

Giving below the code followed by error log:

Inserting the image of expected output that comes when we run the same code
with 3.0.0 or earlier version
<http://matplotlib.1069221.n5.nabble.com/file/t5188/output300.png> :

----------------------------------------------------------
from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt

plt.figure()
ax1 = host_subplot(111, axes_class=AA.Axes)

ax1.axis["top"].toggle(all=False)           # switch off ticks and tick
labels for the top axis

ax2 = ax1.twinx()
ax3 = ax1.twinx()

new_fixed_axis = ax3.get_grid_helper().new_fixed_axis
ax3.axis["right"] = new_fixed_axis(loc="right",
                                    axes=ax3,
                                    offset=(60, 0))

ax2.axis["right"].toggle(all=True)
ax3.axis["right"].toggle(all=True)

ax1.set_xlabel('Defect Reason Codes')
ax1.set_ylabel('Number of Defects')
ax2.set_ylabel('Cumulative Defects as %')
ax3.set_ylabel('Cumulative Defects Count')

x = [0, 1, 2, 3, 4, 5]
y = [19, 12, 6, 4, 3, 2]
y1 = [41, 67, 80, 89, 96, 100]
y2 = [19, 31, 37, 41, 44, 46]

b = ax1.bar(x, y, label='Number of Defects')
l, = ax2.plot(x, y1, lw=5, label='Cumulative Defects as %', color='b')
l1, = ax3.plot(x, y2, lw=5, label='Cumulative Defects Count', color='g')

ax3.set_ylim(15, 50)

ax1.legend(loc=5)
ax1.set_title('Product Defects - August 2018')

ax1.axis["left"].label.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].label.set_color(l.get_color())
ax3.axis["right"].label.set_color(l1.get_color())

ax1.axis["left"].major_ticks.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticks.set_color(l.get_color())
ax3.axis["right"].major_ticks.set_color(l1.get_color())

ax1.axis["left"].major_ticklabels.set_color(b.patches[0].get_facecolor())
ax2.axis["right"].major_ticklabels.set_color(l.get_color())
ax3.axis["right"].major_ticklabels.set_color(l1.get_color())

# setting the color for axis itself is not working in AA
ax2.spines["right"].set_color(l.get_color())   
ax3.spines["right"].set_color(l1.get_color())

ax1.axis[:].major_ticks.set_tick_out(True)
ax2.axis[:].major_ticks.set_tick_out(True)
ax3.axis[:].major_ticks.set_tick_out(True)

plt.show()
--------------
Error Log
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\formatters.py in
__call__(self, obj)
    339                 pass
    340             else:
--> 341                 return printer(obj)
    342             # Finally look for special method names
    343             method = get_real_method(obj, self.print_method)

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
<lambda>(fig)
    242
    243     if 'png' in formats:
--> 244         png_formatter.for_type(Figure, lambda fig: print_figure(fig,
'png', **kwargs))
    245     if 'retina' in formats or 'png2x' in formats:
    246         png_formatter.for_type(Figure, lambda fig:
retina_figure(fig, **kwargs))

C:\Anaconda3\envs\dloct2018\lib\site-packages\IPython\core\pylabtools.py in
print_figure(fig, fmt, bbox_inches, **kwargs)
    126
    127     bytes_io = BytesIO()
--> 128     fig.canvas.print_figure(bytes_io, **kw)
    129     data = bytes_io.getvalue()
    130     if fmt == 'svg':

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\backend_bases.py in
print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format,
bbox_inches, **kwargs)
   2051                     bbox_artists = kwargs.pop("bbox_extra_artists",
None)
   2052                     bbox_inches =
self.figure.get_tightbbox(renderer,
-> 2053                             bbox_extra_artists=bbox_artists)
   2054                     pad = kwargs.pop("pad_inches", None)
   2055                     if pad is None:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
get_tightbbox(self, renderer, bbox_extra_artists)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

C:\Anaconda3\envs\dloct2018\lib\site-packages\matplotlib\figure.py in
<genexpr>(.0)
   2274         bb.extend(
   2275             ax.get_tightbbox(renderer,
bbox_extra_artists=bbox_extra_artists)
-> 2276             for ax in self.axes if ax.get_visible())
   2277
   2278         if len(bb) == 0:

TypeError: get_tightbbox() got an unexpected keyword argument
'bbox_extra_artists'

<Figure size 432x288 with 1 Axes>




--
Sent from: http://matplotlib.1069221.n5.nabble.com/matplotlib-devel-f28077.html
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel


--
Thomas Caswell
[hidden email]
_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel

_______________________________________________
Matplotlib-devel mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-devel