显示字典中的Seaborn图表

4
我需要将绘图存储在一个字典中,格式如下:
import matplotlib.pyplot as plt
import seaborn as sns

test = dict()
test['a'] = sns.lmplot(x="sepal_length", y="sepal_width", hue="species",
                       truncate=True, height=5, data=sns.load_dataset("iris"))

但是我该如何从 dict 中显示这个图表呢?

test['a'] 返回的是类似于 <seaborn.axisgrid.FacetGrid at 0x233011bfe80> 的绘图对象,但并不会显示图表本身。

test['a']
plt.show()

同样也没有显示图表。

有什么建议可以从字典中显示图表吗?

根据给出的答案,我尝试将dict保存到pickle文件中,但是从pickle中显示图表时会出现错误:

import pickle
import matplotlib.pyplot as plt
import seaborn as sns

test = dict()
test['a'] = sns.lmplot(x="sepal_length", y="sepal_width", hue="species",
                       truncate=True, data=sns.load_dataset("iris"))
plt.close()

# store dict in pickle file
outfile = open('test.pkl', 'wb')
pickle.dump(test, outfile)
outfile.close()

# delete dictionary
del test

# load dictionary form pickle file
infile = open('test.pkl', 'rb')
test = pickle.load(infile)
infile.close()

test['a'].fig

更新了我的回答。 - Quickbeam2k1
1个回答

2

似乎只需要调用相关的fig

test['a'].fig

在jupyter notebook中对我有效。

顺便提一下:必须删除高度参数。

完全改变问题不是好的做法。然而,似乎您的问题只与Jupiter有关!请查看此问题

一个解决方案是在第一个单元格前添加%matplotlib notebook


谢谢,这对我也有帮助!你知道如何防止代码行test['a'] = sns.lmplot(x="sepal_length", ...)显示绘图,因为我只想将绘图存储在字典中以便稍后显示吗? - René
1
请查看此问题。最后一个答案对我有用。我假设您正在使用jupyter notebook。 - Quickbeam2k1
当我将字典test保存到pickle文件中并稍后加载它时,test['a'].fig会返回AttributeError: 'NoneType' object has no attribute 'print_figure'。有什么想法如何解决这个问题吗? - René

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接