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
我想绘制 dates
与 y
值的对比图,我希望 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-axis
、xticks
和 xlabel
未显示。如何更改 xlabel
的格式以显示月份和日期,例如:Mar 01
Mar 02
Mar 03
...
1) 我假设您的 x
轴包含 string
,而不是 datetime
。然后,在绘图之前,我会将其转换如下。
x=[datetime.strptime(xi, "%d.%m.%y") for xi in x]
2) 如果你 select 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()
样本结果在这里。
我的数据看起来像这样
01.03.20 10
02.03.20 10
04.03.20 15
05.03.20 16
我想绘制 dates
与 y
值的对比图,我希望 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-axis
、xticks
和 xlabel
未显示。如何更改 xlabel
的格式以显示月份和日期,例如:Mar 01
Mar 02
Mar 03
...
1) 我假设您的 x
轴包含 string
,而不是 datetime
。然后,在绘图之前,我会将其转换如下。
x=[datetime.strptime(xi, "%d.%m.%y") for xi in x]
2) 如果你 select 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()
样本结果在这里。