Как я могу настроить интервал между графиками столбчатой диаграммы. Matplotlib

#python #pandas #matplotlib #plot

#python #панды #matplotlib #график

Вопрос:

У меня есть гистограмма. Существует 3 столбца, но интервал между ними в каждом году слишком большой. Это проблема add_axes? Потому что я новичок в matlibplot. Кто-нибудь знает, как я могу это изменить?

 import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import style
style.use('ggplot')

dict_ = {'date': [pd.Timestamp('20150720'),pd.Timestamp('20160720'),pd.Timestamp('20170720'),pd.Timestamp('20180720'),pd.Timestamp('20190720'),pd.Timestamp('20200720')],
            'BKNG': [15.22, 6.36, 5.05, 5, 9.3641, -3],
            'MCD' : [25.22, 11.36, 7.05, 9, 8.3641, -6],
            'YUM' : [52.22, 21.36, 25.05, 26, 21.3641, -10]
    
}

df = pd.DataFrame(dict_)
df['date'] = df['date'].dt.year
df.set_index('date',inplace=True)

fig = plt.figure(figsize=(10,8))
ax = fig.add_axes([0,0,1,1])

ax.bar(df.index 0.00, df['BKNG'], color = 'b', width = 0.10, label='BKNG')
ax.bar(df.index 0.20, df['MCD'], color = 'g', width = 0.10, label='MCD')
ax.bar(df.index 0.30, df['YUM'], color = 'r', width = 0.10, label='YUM')

plt.title('ROE')
plt.xlabel('date')
plt.ylabel('value')

plt.legend()
plt.show()
  

вывод

Ответ №1:

Параметр width изменяет ширину столбцов:

поэтому, если вы хотите упорядочить их, вам нужно добавить индекс с шириной столбцов:

 ax.bar(df.index 0.00, df['BKNG'], color = 'b', width = 0.2, label='BKNG')
ax.bar(df.index 0.20, df['MCD'], color = 'g', width = 0.2, label='MCD')
ax.bar(df.index 0.40, df['YUM'], color = 'r', width = 0.2, label='YUM')
  

Или, если вы хотите, чтобы ширина составляла 0,25, измените среднюю полосу на 0,25

 ax.bar(df.index 0.00, df['BKNG'], color = 'b', width = 0.25, label='BKNG')
ax.bar(df.index 0.25, df['MCD'], color = 'g', width = 0.25, label='MCD')
ax.bar(df.index 0.50, df['YUM'], color = 'r', width = 0.25, label='YUM')
  

Для лучшей организации вы можете изменить свой код на это:

 i=0
width = 0.25
gap = .02
cols = ['BKNG','MCD','YUM']
colors= ['b','g','r']
for col in cols:
    ax.bar(df.index (i*(width gap)), df[col], color = colors[i], width = width, label=col)
    i =1
  

Комментарии:

1. Привет. Я хочу знать, как отрегулировать разрыв или интервал между 3 столбцами в каждом году. Заранее благодарю вас.

2. разрыв можно добавить, добавив дополнительное значение к вашей ширине. Я обновлю решение

Ответ №2:

Построение графиков Pandas немного упрощает жизнь:

 df.plot.bar(width=0.5)
  

Вы можете настроить width , чтобы указать интервал между группами. При 1 этом интервал отсутствует. При 0.5 этом интервал равен ширине групп, т. Е. Занимает Половину общего пространства.

введите описание изображения здесь