在matplotlib中,当我移动了左脊椎后,如何将y刻度标签移动到制图区域的最左侧?
代码:
import matplotlib.pyplot as plt
X = range(-10,5)
y = [i**2 for i in X]
fig, ax = plt.subplots(1,1, figsize=(10,8))
plt.plot(X, y)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_position('zero')
输出:
但是,我想得到这个:
答案 0 :(得分:2)
您可以通过遍历刻度标签来利用它们的set_position
属性。在这里,您必须传递(xy)值,以将其设置为tickl标签的新位置。我们知道x位置是-10。我发现您指定的y位置无关紧要,刻度线会被x
的值偏移,这也是有意义的,因为刻度线标签必须与y轴上的刻度线相对应。但是,不能将y值留空。因此,指定(-10)
不起作用,而(-10, 0)
,(-10, -100)
或(-10, 1000)
对刻度的y位置没有影响。原因是
@ImportanceOfBeingErnest澄清:标签的y位置将由数据的y值确定,并在应用更改后的绘制时设置。
for tick in ax.yaxis.get_major_ticks():
print (tick.label.set_position((-10, 0)))
答案 1 :(得分:2)
将y-tick标签的变换更改回原始的y轴变换,可以在轴的左侧获得所需的刻度。
plt.setp(ax.get_yticklabels(), transform=ax.get_yaxis_transform())
完整的代码以提高可重复性
import matplotlib.pyplot as plt
X = range(-10,5)
y = [i**2 for i in X]
fig, ax = plt.subplots(1,1, figsize=(10,8))
plt.plot(X, y)
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.spines['left'].set_position('zero')
plt.setp(ax.get_yticklabels(), transform=ax.get_yaxis_transform())
plt.show()