如何使用Python 3在x轴上指定日期以生成条形图

时间:2018-06-16 07:29:44

标签: python-3.x pandas numpy matplotlib plotly

我想制作一个如下图所示的条形图。如何使用Python 3.5在x轴上指定日期?

enter image description here

2 个答案:

答案 0 :(得分:0)

所以我尝试在下面的例子中尽可能多地复制轴值。

设置x-axis时可能需要了解的一些属性是:

  

类型(枚举:“ - ”|“线性”|“日志”|“日期”|“类别”)
  默认值:“ - ”
设置轴类型。默认情况下,通过查看迹线数据来图示尝试确定轴类型   它引用了相关的轴。

     

nticks(大于或等于0的整数)
  默认值:0
指定特定轴的最大刻度数。将选择实际的刻度数   自动小于或等于nticks。只有效果   如果tickmode设置为“自动”。

     

tick0(数字或分类坐标字符串)
设置此轴上第一个刻度的位置。与dtick一起使用。如果   轴type是“log”,那么你必须记录你的起始刻度   (例如,将起始刻度设置为100,将tick0设置为2)除外   当dtick =“L”时(有关详细信息,请参阅dtick)。如果轴type是   “date”,它应该是日期字符串,就像日期数据一样。如果轴type   是“类别”,它应该是一个数字,使用每个的比例   类别按顺序从零开始分配序列号   出现。

     

tickformat(字符串)
  默认值:“”
使用与Python中非常相似的d3格式化迷你语言设置刻度标签格式规则。   有关数字,请参阅:   https://github.com/d3/d3-format/blob/master/README.md#locale_format   对于日期,请参阅:   https://github.com/d3/d3-time-format/blob/master/README.md#locale_format   我们在d3的日期格式化程序中添加了一个项目:“%{n} f”表示小数秒   有n位数。例如,“2016-10-13 09:15:23.456”,带有tickformat   “%H~%M~%S.%2f”将显示“09〜15~23.46”

     

嘀嗒(角度)
  默认值:自动
设置刻度标签相对于水平方向的角度。例如,-90的tickangle绘制了勾号   垂直标签。

因此,这些属性设置为以下值。

type='date',
nticks=40,
tick0=86400000.0,
tickformat="%Y%m%d",
tickangle=-45,

请查看以下示例,如果您的问题已解决,请与我们联系!

import pandas as pd
import numpy as np
import plotly.offline as py_offline
import plotly.graph_objs as go
py_offline.init_notebook_mode()

df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv")

trace_high = go.Bar(
                x=df.Date,
                y=df['AAPL.High'],
                name = "AAPL High",
                opacity = 0.8)


data = [trace_high]

layout = dict(
    title = "Manually Set Date Range",
    xaxis = dict(
        type='date',
        nticks=40,
        tick0=86400000.0,
        tickformat="%Y%m%d",
        tickangle=-45,
        range = ['2016-07-01','2016-07-31'])
)

fig = dict(data=data, layout=layout)
py_offline.iplot(fig, filename = "Manually Set Range")

答案 1 :(得分:0)

如果您的数据位于带有日期列('dat')的数据框中,则首先需要将该列设为日期对象,然后将其作为索引。

df['dat'] = pd.to_datetime(df.['dat'])
df.index = pd['dat']
df['column name'].plot()

您还可以在绘制

之前对值进行排序
df.sort_value('dat')