我想使用pythonplotly创建条形图,并在x轴上将日期作为字符串/类别。由于某种原因,plotly不断将字符串转换为日期。我的x轴是日期的连续“时间轴”,而不是我期望的类别。
我的问题:如何构造条形图,将日期而不是日期作为类别处理?
最小示例:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown button
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</div>
示例:
答案 0 :(得分:1)
阅读documentation有关日期格式和时间序列的信息,似乎可以自动将格式为日期的数据转换为日期。
您应重新格式化数据,例如“ 2018-08-04”变为“ 2018/08/04”。但是您会有一个更基本的条形图,这意味着X间隔的格式看起来不像现在这样好。
您始终可以手动重命名x轴,但是对于您尝试执行的操作而言,它可能会显得过大。为此,建议您进行pd.date_range()
,以获取具有可打印日期格式的日期列表,然后手动设置x标签。
答案 1 :(得分:1)
您可以在type
设置中指定轴layout
。可以自动检测日期,但是您可以通过设置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)