2017-01-10 10 views
0

Plotsнежелательные пустые подзаговоры в Matplotlib

Я новичок в Matplotlib и Сиборн и в настоящее время пытается практиковать две библиотеки, используя классические титанический набор данных. Это может быть элементарным, но я пытаюсь построить два factorplots бок о бок, вводя оси АХ = Matplotlib аргументов, как показано в коде ниже:

import matploblib.pyplot as plt 
import seaborn as sns 
%matplotlib inline 

fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4)) 
sns.factorplot(x='Pclass',data=titanic_df,kind='count',hue='Survived',ax=axis1) 
sns.factorplot(x='SibSp',data=titanic_df,kind='count',hue='Survived',ax=axis2) 

Я ожидал стороне две factorplots бок, но вместо того, чтобы просто, что я закончил с двумя дополнительными пустыми подзаговорами, как показано выше

Edited: изображение не было там

+1

http://stackoverflow.com/questions/23969619/черчения-с-Сиборн-используя-на-Matplotlib-объектно-ориентированный интерфейс – mwaskom

ответ

1

Любой вызов sns.factorplot() фактически создает новую фигуру, хотя содержимое обращается к существующим оси (axes1, axes2). Эти цифры показаны вместе с оригиналом fig.

Я думаю, что самый простой способ предотвратить появление неиспользуемых фигур - закрыть их, используя plt.close(<figure number>).

Вот решение для ноутбука

import matplotlib.pyplot as plt 
import seaborn as sns 
import pandas as pd 
%matplotlib inline 

titanic_df = pd.read_csv(r"https://github.com/pcsanwald/kaggle-titanic/raw/master/train.csv") 

fig, (axis1,axis2) = plt.subplots(1,2,figsize=(15,4)) 
sns.factorplot(x='pclass',data=titanic_df,kind='count',hue='survived',ax=axis1) 
sns.factorplot(x='sibsp',data=titanic_df,kind='count',hue='survived',ax=axis2) 
plt.close(2) 
plt.close(3) 

(Для нормальной консоли черчения, удалите команду %matplotlib inline и добавить plt.show() в конце.)