Экстремальные и нормальные значения линейного графика Python + Seaborn разборчивы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Экстремальные и нормальные значения линейного графика Python + Seaborn разборчивы?

Сообщение Anonymous »

Итак, я работал с МНОГО данных, но для простоты мы можем использовать приведенный ниже пример данных. Однако я пытаюсь построить линейную диаграмму, которая позволит мне увидеть экстремумы, сжать ось Y там, где значения отсутствуют, и расширить ось Y там, где присутствуют данные. У меня проблема, как показано на рисунке ниже. Мы видим, что между 3500 и 500 данных нет, но есть огромный разрыв, а затем почти сплошная линия внизу.
Изображение

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

Вот код, который у меня есть, который пока создает диаграммы, но мне нужно иметь возможность применить это к гораздо большему набору данные. Набор данных, который я бы для этого использовал, будет содержать сотни «сотрудников» в нескольких магазинах. Таким образом, крайние значения будут примерно такими: «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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Наложение коробчатого графика и линейного графика Seaborn
    Anonymous » » в форуме Python
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • При построении графика с помощью sns/seaborn отображается только один фрагмент графика.
    Anonymous » » в форуме Python
    0 Ответы
    106 Просмотры
    Последнее сообщение Anonymous
  • Pip/Python: нормальные пакеты на сайте не подлежат записи
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Отображать нормальные векторы с Open3d.visualization.o3dvisualizer
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Почему компиляторы генерируют нормальные нагрузки и хранилища для 64-битной атомки, а не в RISC-V?
    Anonymous » » в форуме C++
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»