import os import numpy as np import pandas as pd import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt def createCusGraphics(df: pd.DataFrame, newDf: pd.DataFrame): # для сохранения диаграммы в конкретной папке script_dir = os.path.dirname(__file__) results_dir = os.path.join(script_dir, '../static/') if not os.path.isdir(results_dir): os.makedirs(results_dir) df.rename(columns={'small': 'small_1', 'average': 'average_1', 'big': 'big_1'}, inplace=True) newDf.rename(columns={'small': 'small_2', 'average': 'average_2', 'big': 'big_2'}, inplace=True) # Объединяем две группы в один DataFrame merged_df = pd.concat([df, newDf], axis=1, ignore_index=False) # Создаем массив с индексами для каждой компании index = np.arange(len(merged_df)) print(merged_df) # Задаем ширину каждого столбца bar_width = 0.2 # Построение столбчатой гистограммы с увеличенным расстоянием между столбцами plt.bar(index, merged_df['small_1'], bar_width, label='Min 1', color='b') plt.bar(index + bar_width, merged_df['average_1'], bar_width, label='Mean 1', color='g') plt.bar(index + 2 * bar_width, merged_df['big_1'], bar_width, label='Max 1', color='r') plt.bar(index + 3 * bar_width, merged_df['small_2'], bar_width, label='Min 2', color='c') plt.bar(index + 4 * bar_width, merged_df['average_2'], bar_width, label='Mean 2', color='m') plt.bar(index + 5 * bar_width, merged_df['big_2'], bar_width, label='Max 2', color='y') # Устанавливаем подписи на оси x plt.xlabel('Company') plt.ylabel('Valuation') plt.title('Company Valuation Comparison') plt.xticks(index + 2.5 * bar_width, merged_df.index) # Добавляем легенду plt.legend() plt.savefig(results_dir + 'CustomJPG' + str(0) + '.jpg') plt.close() return True