【问题标题】:Editing the date formatting of x-axis tick labels in matplotlib在 matplotlib 中编辑 x 轴刻度标签的日期格式
【发布时间】:2019-03-02 17:47:19
【问题描述】:

我希望编辑 x 轴上日期的格式。下图显示了默认情况下它们在我的条形图上的显示方式。我想删除 'Dec' 和 '2012' 的重复,只在 x 轴上有实际的日期数字。

关于如何做到这一点的任何建议?

【问题讨论】:

标签: python matplotlib


【解决方案1】:

简而言之:

import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)

matplotlib 网站上的许多示例。我最常用的是here

【讨论】:

  • 是否有不使用ax.xaxis但使用plt.<command>的替代方法?
  • @3kstc 也许,但我无法想象模糊地依赖状态机比更明确的命令更可取的情况。
  • 要快速查看所有可能的日期时间格式,请使用strftime.org
  • 注意ax 由@Robino 在答案中定义
  • plt.gca() 返回 Axes 对象,您应该提前定义它
【解决方案2】:

虽然 Paul H 给出的答案显示了基本部分,但它不是一个完整的例子。另一方面,matplotlib example 似乎相当复杂,并且没有显示如何使用天数。

所以对于每个有需要的人来说,这里有一个完整的工作示例:

from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

myDates = [datetime(2012,1,i+3) for i in range(10)]
myValues = [5,6,4,3,7,8,1,2,5,4]
fig, ax = plt.subplots()
ax.plot(myDates,myValues)

myFmt = DateFormatter("%d")
ax.xaxis.set_major_formatter(myFmt)

## Rotate date labels automatically
fig.autofmt_xdate()
plt.show()

【讨论】:

    【解决方案3】:

    example 中显示的包matplotlib.dates 中,可以将日期格式应用于轴标签和绘图的刻度。

    下面我给出了一个为多图标记轴刻度的示例

    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    import pandas as pd
    
    df = pd.read_csv('US_temp.csv')
    plt.plot(df['Date'],df_f['MINT'],label='Min Temp.')
    plt.plot(df['Date'],df_f['MAXT'],label='Max Temp.')
    plt.legend()
    ####### Use the below functions #######
    dtFmt = mdates.DateFormatter('%b') # define the formatting
    plt.gca().xaxis.set_major_formatter(dtFmt) # apply the format to the desired axis
    plt.show()
    

    就这么简单

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 2013-03-31
      • 2012-03-14
      • 2020-10-01
      • 2013-03-24
      • 2019-06-28
      • 1970-01-01
      • 2020-03-29
      相关资源
      最近更新 更多