Python 如何使用Matplotlib添加轴标签(x和y)和旋转y轴编号

Python 如何使用Matplotlib添加轴标签(x和y)和旋转y轴编号,python,matplotlib,Python,Matplotlib,如何添加轴标签(x和y)并使用Matplotlib旋转y轴编号,如下图所示 我尝试了plt.yticks(rotation=45)旋转y轴编号,但没有考虑到 此外,在我的示例代码中,我还尝试使用一个0而不是两个,并使用一个方形网格而不是矩形 from mpl_toolkits.axisartist.axislines import SubplotZero import matplotlib.pyplot as plt import numpy as np fig = plt.figure(

如何添加轴标签(x和y)并使用Matplotlib旋转y轴编号,如下图所示

我尝试了
plt.yticks(rotation=45)
旋转y轴编号,但没有考虑到

此外,在我的示例代码中,我还尝试使用一个0而不是两个,并使用一个方形网格而不是矩形

from mpl_toolkits.axisartist.axislines import SubplotZero
import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = SubplotZero(fig, 111)
fig.add_subplot(ax)

for direction in ["xzero", "yzero"]:
    # adds arrows at the ends of each axis
    ax.axis[direction].set_axisline_style('->')
    # adds X and Y-axis from the origin
    ax.axis[direction].set_visible(True)

ax.axis['yzero'].set_ticklabel_direction("-")

for direction in ["left", "right", "bottom", "top"]:
    # hides borders
    ax.axis[direction].set_visible(False)

x = np.linspace(-5, 5, 100)
ax.plot(x, -x**2+16, color="#ab74a6", linewidth=3)

plt.title(r'$y = -x^2+16$')

plt.yticks(rotation=45)

plt.axis([-5, 5, -10, 20])

plt.grid(True)

plt.show()

下面是一个使用
spines
而不是
SubplotZero
的工作代码示例:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)

x = np.linspace(-5, 5, 100)
ax.plot(x, -x**2+16, color="#ab74a6", linewidth=3)

ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

# hide one of the zero labels and adjust the other
ax.yaxis.get_major_ticks()[3].label1.set_visible(False)
ax.xaxis.get_major_ticks()[3].label1.set_horizontalalignment("right")

ax.plot(1, 0, ">k", transform=ax.get_yaxis_transform(), clip_on=False)
ax.plot(0, 1, "^k", transform=ax.get_xaxis_transform(), clip_on=False)

ax.axis('equal')
ax.set_xlabel('x', position=(1,0), ha='right')
ax.set_ylabel('y', position=(0,1), ha='right', rotation=0)

plt.title(r'$y = -x^2+16$', y=1.08)
plt.grid(True)

plt.show()

我很困惑。示例图像中的数字不是rotated@PaulH如果我不使用
add_subplot
,旋转是有效的,但我的示例图像上不再有x轴和y轴上只有箭头的东西。示例有用吗?@gherka是的,很多,它解决了我的大多数问题并简化了代码!:添加
x
y
标签的唯一方法是获得漂亮的方形网格和箭头?当然。请参阅更新的答案。因为图(10,5)的形状不是正方形,所以网格也不是正方形,但是你可以很容易地改变它。方形图片在屏幕上看起来不太好,所以:)