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

问题描述 投票:0回答:2

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

enter image description here

python-3.x pandas numpy matplotlib plotly
2个回答
0
投票

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

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

type(枚举:“ - ”|“linear”|“log”|“date”|“category”) 默认值:“ - ” 设置轴类型。默认情况下,通过查看引用相关轴的迹线数据,绘图尝试确定轴类型。

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

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”

嘀嗒(角度) 默认值:auto 设置刻度标签相对于水平面的角度。例如,-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")

0
投票

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

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

您也可以在绘图前对您的值进行排序

df.sort_value('dat')
© www.soinside.com 2019 - 2024. All rights reserved.