【发布时间】:2015-04-21 08:37:12
【问题描述】:
我想沿 x 轴水平移动一些刻度的标签,而不移动相应的刻度。
更具体地说,当使用plt.setp 旋转标签时,标签文本的中心与刻度线保持对齐。我想将这些标签向右移动,以便标签的近端对齐,而不是如下图所示。
我知道this post 和this one,但是答案是有趣的组合,而不是对问题的严格回答。
我的代码:
import matplotlib.pyplot as plt
import numpy as np
import datetime
# my fake data
dates = np.array([datetime.datetime(2000,1,1) + datetime.timedelta(days=i) for i in range(365*5)])
data = np.sin(np.arange(365*5)/365.0*2*np.pi - 0.25*np.pi) + np.random.rand(365*5) /3
# creates fig with 2 subplots
fig = plt.figure(figsize=(10.0, 6.0))
ax = plt.subplot2grid((2,1), (0, 0))
ax2 = plt.subplot2grid((2,1), (1, 0))
## plot dates
ax2.plot_date( dates, data )
# rotates labels
plt.setp( ax2.xaxis.get_majorticklabels(), rotation=-45 )
# try to shift labels to the right
ax2.xaxis.get_majorticklabels()[2].set_y(-.1)
ax2.xaxis.get_majorticklabels()[2].set_x(10**99)
plt.show()
奇怪的是,set_y 的行为与预期一样,但即使我将x 设置为 fantasillion,标签也不会移动一丁点。
(plot_date 的使用可能会带来额外的混乱,但实际上plot 也会发生同样的情况。)
【问题讨论】:
标签: python matplotlib label