Matplotlib savefig отключает таблицу pyplot - PullRequest
1 голос
/ 27 мая 2019

Я хочу сделать некоторую обобщающую визуализацию + статистику столбца данных.Я хочу объединить два или более вспомогательных участка с описательной таблицей и сохранить рисунок локально.Однако при сохранении графика часть таблицы обрезается.

Когда я делаю следующее

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

column=np.random.normal(size=10000)
df=pd.DataFrame(column, columns=["Price"])

summary = (
        df.describe()
        .append((df.isnull().sum()/len(df)*100)
        .rename('nans %'))
        .iloc[:,0].to_frame()
        )
fig, (ax_distplot) = plt.subplots(1, 1, figsize=(25, 12))

#Distplot with summarizing table
sns.distplot(df.loc[:,"Price"], hist=True, bins=30, kde=False, ax=ax_distplot)
ax_distplot.set(ylabel='Count')
tab = ax_distplot.table(cellText=np.around(summary.values, decimals=2), 
                        rowLabels=summary.index, 
                        colLabels=summary.columns, loc="right", 
                        bbox=[1.15, .2, 0.25, 0.8])

, я получаю: What it should be

При локальном сохранении с помощью следующей команды

plt.savefig("Price.pdf", bbox_inches="tight")

Выход: Cutted off table

Я пытался

plt.subplots_adjust(right=0.85)

безпри удаче.

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

Это ошибка в том, как вычисляется ограничивающая рамка таблицы.Вы можете открыть вопрос об этом.

Тем временем рисование холста вручную (и, следовательно, дважды) решает эту проблему.

fig.canvas.draw()
plt.savefig("price.png", bbox_inches="tight")
0 голосов
/ 27 мая 2019

Один из обходных путей - добавить вокруг фигуры панель.Я пытался и pad_inches=1 хорошо работает в вашем примере

plt.savefig("Price.pdf", bbox_inches="tight", pad_inches=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...