【问题标题】:How to specify dates on the x-axis to make a bar graph using Python 3如何在 x 轴上指定日期以使用 Python 3 制作条形图
【发布时间】:2018-06-16 07:29:44
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

类型(枚举:“-” | “linear” | “log” | “date” | “category”)
默认值:“-” 设置轴类型。默认情况下,plotly 尝试通过查看轨迹数据来确定轴类型 引用了有问题的轴。

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

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

tickformat (string)
default: ""
使用与Python。 有关数字,请参阅: 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” "%H~%M~%S.%2f" 会显示 "09~15~23.46"

tickangle(角度)
默认值: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")

【讨论】:

    【解决方案2】:

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

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

    您还可以在绘图之前对值进行排序

    df.sort_value('dat')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多