我正在尝试使用以下内容绘制一个 seaborn clustermap(它也不适用于热图),没有承认 NaN:
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
格式良好: 0 1
0 1 2
1 3 4
控制台输出:
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 OS X 10.9.5、python 2.7.9、matplotlib 1.4.3 和 seaborn 0.5.1。我能够重现该错误。
默认情况下,我为 matplotlib 使用 macosx
后端。如果我将后端更改为 qt4agg
(需要 PyQt4)、 tkagg
或 webagg
,则您的代码有效。这是对我有用的脚本:
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()
请注意,我注释掉了
fig = plt.figure()
。 clustermap
似乎创建了自己的图形。关于python - Seaborn matplotlib : Cannot get window extent w/o renderer (RuntimeError),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30138026/