Как я могу получить многоуровневый график с надписью оси X в пандах? - PullRequest
0 голосов
/ 05 января 2019

У меня есть мультииндексированный фрейм данных pandas, я могу создать график правильной формы для того, что мне нужно, но ось x отображается только как заголовки столбцов моего мультииндекса. Я ищу способ получить набор многослойных этикеток.

Что у меня сейчас есть:

Текущий фрейм данных

График с использованием: df.plot (x = Нет, y = ['Опубликованный NIV', 'Future NIV'], kind = 'line')

Обведено синим кружком - это то, как я хочу, чтобы ось выглядела

1 Ответ

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

Это вопрос, над которым я больше всего работал над Stackoverflow. Я надеюсь, что это идеально подходит для вашей проблемы.

Итак, ваши значения периода составляют от 1 до 48, если предположить, и это был единственный способ, которым я мог бы получить это, что это получасовые данные, что я сделал, что я изменил эти значения через полчаса от предоставленной даты и затем, используя форматирование, я изменил его на datetimeindex, а затем создал график.

Итак, вот код и окончательный вывод:

m=pd.read_csv("Data3.csv")
final=m[['Published NIV','Future NIV']]

new2=['0:00:00' if a==1 else str(a//2-1)+':30:00' if a%2==0 else str(a//2)+':00:00' for a in m['Settlement Period']]

alpha=m['Settlement Date']+'-'+new2

final.index=pd.to_datetime(alpha,format='%Y-%m-%d-%X')
final.plot(figsize=(15,9))

И вывод: enter image description here

Единственный недостаток этого кода, который я вижу, заключается в том, что вы не получите те периоды с номерами от 1 до 48, которые с некоторым обходным путем я могу попытаться вернуть, но скажите, подходит ли это вашему случаю.

...