python plotly date axis as string not dates

南笙酒味 提交于 2020-01-25 00:12:20

问题


I want to create a bar chart using python plotly, with on the x-axis dates as strings/categories. For some reason, plotly keeps transforming strings to dates. My x-axis is continuous "timeline" of dates, rather than categories as I would expect.

My question: how can I construct a bar chart where my dates are handled as categories, rather than dates?

Minimal example:

d = {'date': ['2018-08-04', '2018-08-02','2018-08-03', '2018-08-11','2018-08-11'], 'score': [3, 4, 6, 2,8]}
df = pd.DataFrame(data=d)

data = [go.Bar(
            x=df['date'],
            y=df['score']
    )]

offline.iplot(data, filename='basic-bar')

Example:


回答1:


Reading the documentation about date formatting and time series, it seems like plotly automatically converts data that is formatted as a date... to a date.

  1. You should reformat your data, such as '2018-08-04' becomes '2018/08/04' for instance. But you would have a more basic bar plot, meaning the X intervals wouldn't look as nicely formatted as it is now.

  2. You can always rename the x-axis manually, but it might be overkill for what you're trying to do. To do this, I suggest you do pd.date_range() so that you're getting a list of dates with plotly date format, then, manually set the x labels.




回答2:


You can specify the axis type in your layout settings. Plotly autodetects dates but you can overwrite it by setting type='category'.

import pandas as pd
import plotly

plotly.offline.init_notebook_mode()

d = {'date': ['2018-08-04', '2018-08-02','2018-08-03', '2018-08-11','2018-08-11'], 
     'score': [3, 4, 6, 2,8]}
df = pd.DataFrame(data=d)

data = plotly.graph_objs.Bar(x=df['date'],
                             y=df['score'])

#the magic happens here
layout = plotly.graph_objs.Layout(xaxis={'type': 'category'})

fig = plotly.graph_objs.Figure([data], layout)
plotly.offline.iplot(fig)


来源:https://stackoverflow.com/questions/52551957/python-plotly-date-axis-as-string-not-dates

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!