【问题标题】:python matplotlib set xticks with hour formatpython matplotlib 以小时格式设置 xticks
【发布时间】:2014-02-20 10:14:00
【问题描述】:

在我的条形图中,我需要将xticks 设置为小时格式,如下所示:

6:00, 7:00, 8:00......

我用来制作图表的数据来自MySQL 数据库,我在数据库表中使用了TimeStamp。现在xticks是这样的:

6, 7, 8......

我不知道如何以我想要的方式改变它。

`query = """select HOUR(TimeStamp) AS Hour, SUM(Pac/12) As Pac FROM SolarData WHERE `TimeStamp` >= CURDATE() AND `TimeStamp` < CURDATE()+1 GROUP BY HOUR(TimeStamp);""";`

补充:TimeStamp 并非每天在同一时间创建。我希望x-axis 可以标记为下图:

但是如果我像这样创建x-axis,考虑到我进行查询的方式,可能存在一个潜在问题:HOUR(TimeStamp)INT 数据类型,并且图像中的x-axis 标有@ 987654335@数据类型……只要我明白。

我尝试了下面的这个查询,但我仍然没有解决数据类型冲突的问题。我没有设置xticks,而是尝试重新格式化TimeStamp,使其如下:

6:00,7:00,8:00,9:00...

代替:

6,7,8,9....

'%H:%00' 会使TimeStamp 无法使用底部的plt.bar() 命令...

`select DATE_FORMAT(TimeStamp, '%H:%00') AS Hour, SUM(Pac/12) As Pac FROM SolarData WHERE `TimeStamp` >= CURDATE()-1 AND `TimeStamp` < CURDATE() GROUP BY HOUR(TimeStamp);`

barchart = plt.bar(TimeStamp, Pac, align='center', width=0.20, color='#FFCC33')

【问题讨论】:

    标签: python mysql matplotlib plot timestamp


    【解决方案1】:

    您还可以使用出色的 Pandas Python Data Analysis Library 根据查询的输出创建时间序列对象数组。看看包含大量good examples 的 Pandas 网站。特别是look here,了解如何使用 pandas 和 matplotlib 来控制 x 轴的外观。

    【讨论】:

    • 我查找了您链接的特定示例。 x_compat=True 看起来不错,我需要尝试一下这是否适用于我的代码。
    【解决方案2】:

    您需要使用方法xticks,请参阅matplotlib 文档中的此示例。

    http://matplotlib.org/examples/pylab_examples/barchart_demo2.html

    【讨论】:

    • 好的,我的问题是因为每天的时间戳不是同时开始创建的(这取决于日出时间,有时是凌晨 5 点,有时是早上 7 点),这种方式不会除非可以自动缩放或其他东西,否则似乎对我有用。
    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 2021-07-10
    • 1970-01-01
    • 2018-10-23
    • 2023-01-09
    • 1970-01-01
    • 2018-08-05
    • 2019-03-14
    相关资源
    最近更新 更多