Seaborn matplotlib: cannot get window size without rendering (RuntimeError)

I'm trying to build a nautical map of the clusters (it doesn't work with thermal insulation either) with the following, no NaNs recognized:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

def plotClusterMap():
    a = pd.DataFrame(np.matrix('1 2; 3 4'))
    print a
    fig = plt.figure()
    sns.clustermap(a)
    plt.show()

      

a

well formed:

   0  1
0  1  2
1  3  4

      

Console output:

Traceback (most recent call last):
  File "main.py", line 78, in <module>
    main()
  File "main.py", line 72, in main
    heatmapPlotter.plotClusterMap()
  File "/Users/username/code.py", line 12, in plotClusterMap
    sns.clustermap(a)
  File "/Library/Python/2.7/site-packages/seaborn/matrix.py", line 895, in clustermap
    **kwargs)
  File "/Library/Python/2.7/site-packages/seaborn/matrix.py", line 813, in plot
    self.plot_matrix(colorbar_kws, mask, **kws)
  File "/Library/Python/2.7/site-packages/seaborn/matrix.py", line 803, in plot_matrix
    cbar_kws=colorbar_kws, mask=mask, **kws)
  File "/Library/Python/2.7/site-packages/seaborn/matrix.py", line 292, in heatmap
    plotter.plot(ax, cbar_ax, kwargs)
  File "/Library/Python/2.7/site-packages/seaborn/matrix.py", line 177, in plot
    if axis_ticklabels_overlap(xtl):
  File "/Library/Python/2.7/site-packages/seaborn/utils.py", line 374, in axis_ticklabels_overlap
    bboxes = [l.get_window_extent() for l in labels]
  File "/usr/local/lib/python2.7/site-packages/matplotlib/text.py", line 796, in get_window_extent
    raise RuntimeError('Cannot get window extent w/o renderer')
RuntimeError: Cannot get window extent w/o renderer

      

  • Mac OSX: 10.9 10.10.3 (change)
  • Seaborn: 0.5.1
  • Matplotlib: 1.3.1 (just downgraded since 1.4)
  • Numpy: 1.8.0
  • Python: 2.7.9
+3


source to share


1 answer


I am using Mac OS X 10.9.5, python 2.7.9, matplotlib 1.4.3 and marine boats 0.5.1. I was able to reproduce the error.

By default I am using the backend macosx

for matplotlib. Your code works if I change the backend to qt4agg

(requires PyQt4), tkagg

or webagg

. Here's the script that worked for me:



import numpy as np
import pandas as pd

import matplotlib
matplotlib.use('qt4agg')  # Can also use 'tkagg' or 'webagg'

import matplotlib.pyplot as plt
import seaborn as sns


def plotClusterMap():
    a = pd.DataFrame(np.matrix('1 2; 3 4'))
    print a
    # fig = plt.figure()
    sns.clustermap(a)
    plt.show()


if __name__ == "__main__":
    plotClusterMap()

      

Please note that I have commented fig = plt.figure()

. clustermap

seems to be creating its own shape.

+3


source







All Articles