gpt4 book ai didi

python - MatplotLib 3.0.1 中 ax.set_xlabel() 和 ax.xaxis.set_label() 的区别

转载 作者:太空狗 更新时间:2023-10-29 22:28:31 27 4
gpt4 key购买 nike

(这可能是一个天真的问题。请原谅我。)

我正在使用 Python 3.7.1 和 MatplotLib 3.0.1。

在下面的简单代码中,我使用不同的方式将标签分配给轴。从 OO 的角度来看,它们似乎是等价的。但只有 x 轴 标签显示。为什么?

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.linspace(-2,2,60)
y = np.linspace(-2,2,60)

xx, yy = np.meshgrid(x,y)

z = xx**2 + yy**3

surf = ax.plot_surface(xx, yy, z, cmap="viridis")

ax.set_xlabel('x axis') # <====== This works
ax.yaxis.set_label('y axis') # <====== This doesn't work
ax.zaxis.set_label('z axis') # <====== This doesn't work

在下图中,您可以看到仅显示标签 x axis

enter image description here

加1

根据 here ,似乎 matplotlib.axis.XAxis.set_label() 方法应该有效。

在我的例子中,ax.xaxismpl_toolkits.mplot3d.axis3d.XAxis 类型。这是一个有点不同的类型。但我认为它应该也能正常工作。

最佳答案

matplotlib 中有几种称为“标签”的东西。有例如轴标签,通过set_xlabel设置,有刻度标签,通过set_ticklabels设置,还有艺术家标签,通过set_label设置。

matplotlib 中的每个艺术家都有一个标签属性。你通常在为它设置标签以显示在图例中时遇到它,

plt.plot(..., label="my label")

但它也可能对其他情况有帮助。以上相当于

line, = plt.plot(...)
line.set_label("mylabel")

因此,不仅 plot 创建的 Line2D 对象有标签,而且 matplotlib.axis.XAxis 也有标签。这是您使用 ax.yaxis.set_label 设置的。但是,在生成图例时默认情况下不会考虑这一点,因此它的实用性对于最终用户来说是值得怀疑的。

对于轴的标签,set_ylabel 实际上是用于设置 ylabel 的方法。在内部,这将调用 yaxis.set_label_text,因此正如 @DavidG 正确指出的那样,您可以将 ax.set_ylabel(..) 替换为 ax.yaxis。 set_label_text(..)(除了一个额外的参数 labelpad,它被 set_ylabel 使用,但不被 set_label_text 使用。

关于python - MatplotLib 3.0.1 中 ax.set_xlabel() 和 ax.xaxis.set_label() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53311685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com