47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
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 |