MAI/LabWork01/LabWork3/CustomGraphics.py

47 lines
2.0 KiB
Python
Raw Normal View History

2023-10-12 17:46:05 +04:00
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