Изображения появляются растянутыми в созданном фляге отчете - PullRequest
0 голосов
/ 02 мая 2019

Я создал веб-приложение, которое позволяет пользователям загружать CSV-файл и возвращает PDF-файл с визуализациями на основе введенных данных (особенно для CSV-файлов из экспорта Google My Business).

Проблема в том, что визуализации либо выглядят растянутыми в pdf, сгенерированном моим приложением, либо некоторые ярлыки обрезаются. Я попытался изменить размеры графиков, но это, похоже, не повлияло на мой результат.

Так выглядят графики Пример 1: First Image

Пример 2: Second Image

Вот код, который я использовал для создания этих визуализаций:

def transform():
    disc = open('clean.csv')
    disc2 = open('clean_two.csv','w')
    #cleaning up csv
    for row in disc:
        row = row.strip()
        row = row[1:-1]
        row = row.replace('""','"')
        disc2.write(row+'\n')
    disc2.close()
    disc.close()
    discovery = pd.read_csv('clean_two.csv')
    discovery_clean = discovery.iloc[1:]
    cols = list(discovery_clean.columns[4:])
    discovery_clean[cols] = discovery_clean[cols].apply(pd.to_numeric,errors='coerce')
    #return discovery_clean
    #first figure
    with PdfPages('plots.pdf') as pdf:
        plt.figure(figsize=(16,8))
        ax = discovery_clean[cols].sum().plot.bar(figsize=(20,10))
        ax.axes.get_yaxis().set_visible(False)
        ax.set_title('Overview\n',fontsize='15',color='black')
        ax.xaxis.set_tick_params(labelsize=15)
        for x in ax.patches:
            ax.text(x.get_x()-.09,x.get_height()+20,\
            f'{int(x.get_height()):,}',fontsize=15,color='black')
        plt.rcParams['figure.figsize']=(20,10)
        pdf.savefig()
        plt.close()      
        #second image
        mpl.rcParams['font.size'] = 12
        disc_plot = discovery_clean.groupby('Business name')['Total views'].sum().nlargest(10)
        labels = list(disc_plot.index)
        nums = (disc_plot.values).astype(int)
        def actual_nums(vals):
            a = np.round(vals/100.*nums.sum())
            return a
        explode=(0.3,0,0,0,0,0,0,0,0,0)
        plt.pie(nums,labels=labels,autopct=actual_nums,explode=explode,radius=1)
        plt.title("Total Views per Location\n",fontsize=20)
        pdf.savefig()
        plt.close()
        #setting metadata
        pdf_plots = pdf.infodict()
        pdf_plots['Title'] = 'Reports'
    return pdf_plots
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...