
Мне бы хотелось, чтобы отображался линейный график, куда мы также включаем экстремумы (итоговые значения), но нет иметь огромный разрыв между данными о продажах и по-прежнему иметь возможность видеть такие данные о продажах, но также включать строку вверху для итоговых данных:

Вот код, который у меня есть, который пока создает диаграммы, но мне нужно иметь возможность применить это к гораздо большему набору данные. Набор данных, который я бы для этого использовал, будет содержать сотни «сотрудников» в нескольких магазинах. Таким образом, крайние значения будут примерно такими: «Store_A»: 9560, «Store_B»: 6470, но «нормальные» значения для продаж сотрудников будут находиться в диапазоне от 0 до 300 (но 300 является переменной, в некоторые недели у нас есть ребята это более 300).
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
# Sample data
data = {
'Date': ['2025-01-10', '2025-01-17', '2025-01-24', '2025-01-31'],
'Bob': [156, 60, 58, 62],
'Joe': [37, 40, 139, 42],
'Sally': [62, 265, 63, 67],
'Total': [3698, 3750, 3720, 3800]
}
# Create a DataFrame
df = pd.DataFrame(data)
# Melt the DataFrame to long format
df_melted = df.melt(id_vars='Date', var_name='Employee', value_name='Sales')
# Convert Date column to datetime
df_melted['Date'] = pd.to_datetime(df_melted['Date'])
# Create the line plot
plt.figure(figsize=(12, 8))
sns.lineplot(x='Date', y='Sales', hue='Employee', data=df_melted, marker='o')
# Set y-axis to display whole numbers only
plt.gca().yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: f'{int(x):,}'))
# Add labels and title
plt.xlabel('Date')
plt.ylabel('Number of Sales')
plt.title('Employee Sales Data Over Time')
# Set custom y-axis ticks with greater spacing for lower numbers and compressed ranges without data
custom_ticks = [0, 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100] #+ list(range(200, 4001, 1000))
plt.gca().set_yticks(custom_ticks)
# Show the plot
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/793 ... es-legible