Лучший способ показывать даты на Барном участке с Пандами - PullRequest
0 голосов
/ 30 января 2019

Я создаю гистограмму следующим образом: enter image description here

Но так как каждая метка оси x - это один день января (например, 1, 3, 4, 5, 7,8 и т. Д.) Я думаю, что лучший способ показать это примерно так:

__________________________________________________  x axis
Jan   1   3   4   5   7   8  ...
2019

Но я не знаю, как это сделать с Пандами.

Вот мой код:

import pandas as pd
import matplotlib.plt as plt    

df = pd.read_excel('solved.xlsx', sheetname="Jan")

fig, ax = plt.subplots()

df_plot=df.plot(x='Date', y=['Solved', 'POT'], ax=ax, kind='bar', 
        width=0.9, color=('#ffc114','#0098c9'), label=('Solved','POT'))


def line_format(label):
"""
Convert time label to the format of pandas line plot
"""
month = label.month_name()[:3]
if month == 'Jan':
    month += f'\n{label.year}'
return month

ax.set_xticklabels(map(lambda x: line_format(x), df.Date))   

Функция была предоставлена ​​здесь: График изменения графика на панели панд

Не знаю какизменить его, чтобы получить ось, которую я хочу

Мой пример данных решен.xlsx:

Date       Q    A    B  Solved POT
2019-01-04 Q4   11   9    14    5 
2019-01-05 Q4   9    11   14    5  
2019-01-08 Q4   11   18   10    6 
2019-01-09 Q4   18   19   18    5

1 Ответ

0 голосов
/ 31 января 2019

Я нашел решение:

import pandas as pd
import matplotlib.plt as plt    

df = pd.read_excel('solved.xlsx', sheetname="Jan")

fig, ax = plt.subplots()

df_plot=df.plot(x='Date', y=['Solved', 'POT'], ax=ax, kind='bar', 
        width=0.9, color=('#ffc114','#0098c9'), label=('Solved','POT'))


def line_format(label):
"""
Convert time label to the format of pandas line plot
"""
day = label.day
if day == 2:
    day = str(day) + f'\n{label.month_name()[:3]}'
return day

ax.set_xticklabels(map(lambda x: line_format(x), df.Date)) 

plt.show()

В моем конкретном случае у меня не было даты 2019-01-01.Итак, первый день для меня был 2 января 1004

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...