ccb*_*ney 8 python plot matplotlib axis-labels
这似乎应该很容易 - 但我看不出怎么做:
我有一个时间在X轴上的情节.我想设置两组刻度,小刻度显示当天的小时和主要刻度显示日/月.所以我这样做:
# set date ticks to something sensible:
xax = ax.get_xaxis()
xax.set_major_locator(dates.DayLocator())
xax.set_major_formatter(dates.DateFormatter('%d/%b'))
xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
xax.set_minor_formatter(dates.DateFormatter('%H'))
Run Code Online (Sandbox Code Playgroud)
这标记了刻度线确定,但主刻度标签(日/月)绘制在次刻度标签之上:

如何强制主要刻度标签绘制在次要刻度标签下方?我尝试在DateFormatter中添加换行符转义字符(\n),但由于垂直间距不太正确,所以这是一个很差的解决方案.
任何意见,将不胜感激!
Hol*_*ger 17
您可以将axis方法set_tick_params()与关键字一起使用pad.比较以下示例.
import datetime
import random
import matplotlib.pyplot as plt
import matplotlib.dates as dates
# make up some data
x = [datetime.datetime.now() + datetime.timedelta(hours=i) for i in range(100)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]
# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()
ax = plt.gca()
# set date ticks to something sensible:
xax = ax.get_xaxis()
xax.set_major_locator(dates.DayLocator())
xax.set_major_formatter(dates.DateFormatter('%d/%b'))
xax.set_minor_locator(dates.HourLocator(byhour=range(0,24,3)))
xax.set_minor_formatter(dates.DateFormatter('%H'))
xax.set_tick_params(which='major', pad=15)
plt.show()
Run Code Online (Sandbox Code Playgroud)
PS:这个例子是从moooeeeep借来的
以下是上述代码段的呈现方式:

| 归档时间: |
|
| 查看次数: |
6217 次 |
| 最近记录: |