首页 > 解决方案 > Seaborn 子图未显示 IPython

问题描述

之后我的子图没有显示plt.show(),如果我尝试保存子图,也没有任何图。这是我的代码,

import pandas as pd
import seaborn as sns
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

sns.set()
data = pd.read_csv('somedata.csv')

grouped = data.groupby('data_type')
grouped.groups.keys()
targets = zip(grouped.groups.keys(), axs.flatten())

fig, axs = plt.subplots(figsize=(13,9),
                        nrows=2, ncols=2)

for i, (key, ax) in enumerate(targets):
    sns.lineplot(data=grouped.get_group(key), ax=ax, 
                 x="num_items", y="mean", 
                 hue="label", style="label")
    ax.set_title('Insertion Performance: ' + key)

plt.show()

fig.savefig('./experimenet_plots/bst_vs_avl.png', dpi=200)

标签: pythonseaborn

解决方案


我唯一能看到的是你必须创建你的fig,axsbefore targets。下面显示了它的工作原理:

data = pd.DataFrame(np.random.uniform(0,1,(50,2)),columns=['num_items','mean'])
data['data_type'] = np.random.choice(['1','2','3','4'],50)
data['label'] = np.random.choice(['A','B'],50)
grouped = data.groupby('data_type')
grouped.groups.keys()

#this part
fig, axs = plt.subplots(figsize=(13,9),nrows=2, ncols=2)

targets = zip(grouped.groups.keys(), axs.flatten())

for i, (key, ax) in enumerate(targets):
    sns.lineplot(data=grouped.get_group(key), ax=ax,
                 x="num_items", y="mean", hue="label", style="label")
    ax.set_title('Insertion Performance: ' + str(key))

在此处输入图像描述


推荐阅读