matplotlib pyplot 中的顶部和右侧轴标签
Top and right axes labels in matplotlib pyplot
我有一个 matplotlib/pyplot 图,它按我想要的方式显示,因为轴在 x 轴和 y 轴上都显示了从 -1 到 +1 的所需值范围。我已经标记了 x 和 y 轴。但是,我还希望将右侧的垂直轴标记为文本“思考”,将顶部的轴标记为文本“外向”。
我查看了 matplotlib 文档,但无法使用 set_xlabel 和 set_ylabel 执行我的代码。我已经在我的代码中注释掉了这些行,所以我的代码现在可以运行 - 但希望这些注释能够清楚地说明我正在尝试做什么。
import matplotlib.pyplot as plt
w = 6
h = 6
d = 70
plt.figure(figsize=(w, h), dpi=d)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
plt.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
#secax = plt.secondary_xaxis('top')
#secax.set_xlabel('Extraverted')
#secay = plt.secondary_xaxis('right')
#secay.set_ylabel('Thinking')
#plt.show()
plt.savefig("out.png")
我用 plt.subplots()
解决了
import matplotlib.pyplot as plt
w = 6
h = 6
d = 70
plt.figure(figsize=(w, h), dpi=d)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
fig , ax1 = plt.subplots()
ax1.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
ax2 = ax1.twinx()
plt.ylabel('right corner')
作为@先生。 T 指出,没有 plt.secondary_xaxis
方法,所以你需要轴对象
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6), constrained_layout=True, dpi=70)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
plt.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
secax = plt.gca().secondary_xaxis('top')
secax.set_xlabel('Extraverted')
secay = plt.gca().secondary_yaxis('right')
secay.set_ylabel('Thinking')
#plt.show()
plt.savefig("out.png")
更好的方法是从一开始就创建坐标区对象:
fig, ax = plt.subplots(figsize=(w, h), constrained_layout=True, dpi=d)
...
ax.plot(x, y)
ax.set_xlim(-1, 1)
...
secax = ax.secondary_xaxis('top')
...
fig.savefig("out.png")
进一步注意使用constrained_layout=True
使副yaxis标签适合图
我有一个 matplotlib/pyplot 图,它按我想要的方式显示,因为轴在 x 轴和 y 轴上都显示了从 -1 到 +1 的所需值范围。我已经标记了 x 和 y 轴。但是,我还希望将右侧的垂直轴标记为文本“思考”,将顶部的轴标记为文本“外向”。
我查看了 matplotlib 文档,但无法使用 set_xlabel 和 set_ylabel 执行我的代码。我已经在我的代码中注释掉了这些行,所以我的代码现在可以运行 - 但希望这些注释能够清楚地说明我正在尝试做什么。
import matplotlib.pyplot as plt
w = 6
h = 6
d = 70
plt.figure(figsize=(w, h), dpi=d)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
plt.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
#secax = plt.secondary_xaxis('top')
#secax.set_xlabel('Extraverted')
#secay = plt.secondary_xaxis('right')
#secay.set_ylabel('Thinking')
#plt.show()
plt.savefig("out.png")
我用 plt.subplots()
解决了import matplotlib.pyplot as plt
w = 6
h = 6
d = 70
plt.figure(figsize=(w, h), dpi=d)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
fig , ax1 = plt.subplots()
ax1.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
ax2 = ax1.twinx()
plt.ylabel('right corner')
作为@先生。 T 指出,没有 plt.secondary_xaxis
方法,所以你需要轴对象
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 6), constrained_layout=True, dpi=70)
x = [-0.34,-0.155,0.845,0.66,-0.34]
y = [0.76,0.24,-0.265,0.735,0.76,]
plt.plot(x, y)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("Intraverted")
plt.ylabel("Feeling")
secax = plt.gca().secondary_xaxis('top')
secax.set_xlabel('Extraverted')
secay = plt.gca().secondary_yaxis('right')
secay.set_ylabel('Thinking')
#plt.show()
plt.savefig("out.png")
更好的方法是从一开始就创建坐标区对象:
fig, ax = plt.subplots(figsize=(w, h), constrained_layout=True, dpi=d)
...
ax.plot(x, y)
ax.set_xlim(-1, 1)
...
secax = ax.secondary_xaxis('top')
...
fig.savefig("out.png")
进一步注意使用constrained_layout=True
使副yaxis标签适合图