I am trying to print a bar chart using plotly express (px.bar). It is a yearly set of data from 2015 to 2022 but gets plotted from 2016 to 2023. Not sure why...
Code to plot yearly returns.
# plotting the yearly % returns
fig = px.bar(yearly, x='Date', y=['Model','Benchmark'], title="Yearly Profit", labels={'value':
'Percent', 'variable':''},barmode = 'group')
new = {'Model':'Model %', 'Benchmark': bMark + ' %'} # Change the column names for the legend
fig.for_each_trace(lambda t: t.update(name = new[t.name]))
fig.show()
Here is the input “yearly.”
Date | Model | Benchmark | |
---|---|---|---|
0 | 2015-12-31 00:00:00 | 72.7922 | 1.23411 |
1 | 2016-12-30 00:00:00 | 27.1839 | 11.9969 |
2 | 2017-12-29 00:00:00 | 39.9856 | 21.7039 |
3 | 2018-12-31 00:00:00 | 15.6401 | -4.56891 |
4 | 2019-12-31 00:00:00 | 42.3679 | 31.2216 |
5 | 2020-12-31 00:00:00 | 211.67 | 18.3307 |
6 | 2021-12-31 00:00:00 | 56.0862 | 28.7285 |
7 | 2022-10-31 00:00:00 | -1.97482 | -17.7437 |
Here is the output chart.
Maybe not exactly the answer you're looking for, but a workaround is shown below :
Explicitly get a "Year" column:
yearly['Date'] = pd.to_datetime(yearly['Date'])
yearly['Year'] = yearly['Date'].dt.year
Use that in your figure:
fig = px.bar(yearly, x='Year', y=['Model','Benchmark'], title="Yearly Profit", labels={'value':
'Percent', 'variable':''},barmode = 'group')
new = {'Model':'Model %', 'Benchmark': 'bMark' + ' %'} # Change the column names for the legend
fig.for_each_trace(lambda t: t.update(name = new[t.name]))
fig.show()
This shows the years as per expectation.