python plotly日期轴作为字符串而不是日期

时间:2018-09-28 09:09:18

标签: python plotly

我想使用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>

示例:

enter image description here

2 个答案:

答案 0 :(得分:1)

阅读documentation有关日期格式和时间序列的信息,似乎可以自动将格式为日期的数据转换为日期。

  1. 您应重新格式化数据,例如“ 2018-08-04”变为“ 2018/08/04”。但是您会有一个更基本的条形图,这意味着X间隔的格式看起来不像现在这样好。

  2. 您始终可以手动重命名x轴,但是对于您尝试执行的操作而言,它可能会显得过大。为此,建议您进行pd.date_range(),以获取具有可打印日期格式的日期列表,然后手动设置x标签。

答案 1 :(得分:1)

您可以在type设置中指定轴layout。可以自动检测日期,但是您可以通过设置type='category'来覆盖它。

enter image description here

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)