繁体   English   中英

x 轴上的日期标签 python 格式

[英]date label on x-axis python format

我的数据看起来像这样

01.03.20    10
02.03.20    10
04.03.20    15
05.03.20    16

我想绘制datesy值的关系,并且我希望xaxis的格式类似于Mar 01 Mar 02 Mar 03 ...

这是我的代码:

fig, ax = plt.subplots()
ax.scatter(x, y, s=100, c='C0')
ax.plot(x, y, ls='-', c='C0')


# Set the locator
locator = mdates.MonthLocator()  # every month
# Specify the format - %b gives us Jan, Feb...
fmt = mdates.DateFormatter('%b-%d')

X = plt.gca().xaxis
X.set_major_locator(locator)
# Specify formatter
X.set_major_formatter(fmt)

ax.xaxis.set_tick_params(rotation=30)

出现问题,因为x-axisxticksxlabel未显示。 如何更改xlabel的格式以显示月份和日期,例如: Mar 01 Mar 02 Mar 03 ...

1)我假设您的x轴包含string ,而不是datetime 然后,在绘图之前,我会将其转换如下。

x=[datetime.strptime(xi, "%d.%m.%y") for xi in x]

2) 如果您选择MonthLocator ,则无法将其作为 Mar 01 ... 因此,将其切换为DayLocator

locator = mdates.DayLocator()

3)这个是可选的,以获得更清晰的代码。 你不需要X

ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(fmt)
ax.xaxis.set_tick_params(rotation=30)

示例代码在这里。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime

x=["01.03.20", "02.03.20", "04.03.20", "05.03.20"]
x=[datetime.strptime(xi, "%d.%m.%y") for xi in x]
y=[10, 10, 15,16]

fig, ax = plt.subplots()
ax.scatter(x, y, s=100, c='C0')
ax.plot(x, y, ls='-', c='C0')

locator = mdates.DayLocator() 
fmt = mdates.DateFormatter('%b-%d')

ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(fmt)
ax.xaxis.set_tick_params(rotation=30)
ax.set_xlim(x[0],x[3])

plt.show()

示例结果在这里。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM