Я не могу заставить ось x работать так, как я хочу

#python #plotly #bar-chart

Вопрос:

Я использую px.bar для построения графиков прибыли и убытка за каждый торговый день. Проблема в том, что сюжетно меняется порядок дат. Есть ли способ заставить plotly сохранять порядок фрейма данных? Я пытался построить график без назначенного цвета, а затем вернуться и обновить цвет, но мне не повезло.

это моя строка кода для построения фрейма данных

 fig1 = px.bar(dfff, x="DATE", y="Profit/Loss", color = "Marker", color_discrete_map = "identity").update_layout(showlegend=False, title_x=0.5)
 

Вот фрейм данных.

      DATE  Profit/Loss Marker  Cumulative_PnL  Daily_Volume  WinRate WinStreak  CumulativeWinRate  
 08/16/21     -58.1995    red        -58.1995      604.0000  80.0000         0            80.0000    
 08/17/21      -4.7700    red        -62.9695        4.0000  50.0000         0            71.4286    
 08/18/21      31.4984  green        -31.4711     1908.0000 100.0000         1            84.6154    
 08/20/21      49.6200  green         18.1489     1006.0000  50.0000         2            76.4706    
 08/23/21    -930.1800    red       -912.0311      712.0000  50.0000         0            66.6667   
 08/24/21      99.1000  green       -812.9311      306.0000 100.0000         1            70.9677    
 08/25/21      -0.6400    red       -813.5711      332.0000  60.0000         0            67.3913    
 08/26/21     -50.0300    red       -863.6011     2556.0000  66.6667         0            67.3077    
 08/27/21      -9.9100    red       -873.5111       38.0000  81.8182         0            69.8413    
 08/30/21       7.8500  green       -865.6611      424.0000  91.6667         1            73.3333   
 08/31/21       1.0000  green       -864.6611       40.0000 100.0000         2            74.0260
 

Ответ №1:

Ваш DATE столбец имеет строковый тип. Вам нужно преобразовать его в тип даты и времени, чтобы plotly правильно его распознать:

 df['DATE'] = pd.to_datetime(df.DATE, format='%m/%d/%y')
 

После этого он должен правильно построить график:

 fig1 = px.bar(df, x="DATE", y="Profit/Loss", color = "Marker", color_discrete_map = "identity").update_layout(showlegend=False, title_x=0.5)
fig1.show()
 

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

Также смотрите полный пример