繁体   English   中英

MatplotLib 3.0.1中ax.set_xlabel()和ax.xaxis.set_label()之间的区别

Difference between ax.set_xlabel() and ax.xaxis.set_label() in MatplotLib 3.0.1

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

我使用的是Python 3.7.1和M​​atplotLib 3.0.1。

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

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

在此输入图像描述

添加1

根据这里 ,似乎matplotlib.axis.XAxis.set_label()方法应该工作。

在我的例子中, ax.xaxis的类型为mpl_toolkits.mplot3d.axis3d.XAxis 这是一个有点不同的类型。 但我认为它也应该有效。

2 个回复

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 ,正如yaxis.set_label_text正确指出的那样,你可以用ax.set_ylabel(..)替换ax.yaxis.set_label_text(..) (除了labelpad采用的附加参数set_ylabel ,但不是通过set_label_text

查看您为matplotlib.axis.XAxis.set_label()显示的文档,这似乎与为轴本身分配标签以便在图例中使用(请参阅@ ImportanceOfBeingErnest的答案以获得更多解释)

在任何情况下, ax.set_xlabel的等价物是matplotlib.axis.Axis.set_label_text

因此将代码更改为:

ax.set_xlabel('x axis')     
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')

提供所需的输出:

在此输入图像描述

2 Matplotlib plt.xlabel() 与 ax.set_xlabel()

我正在使用一些在 Python 中使用 matplotlib 单例版本的代码,即它有类似的调用 我正在尝试将其转换为功能/无内存版本: 几个问题: 是否可以选择直接设置轴的 xlabel? 像ax.xlabel = "xlabel string" ? 从文档来看,这似乎是不可能的 ...

3 ax.set_xlabel 和 ax.set_ylabel 不适用于熊猫图

我以前发现过类似的问题,但我还没有找到对我有用的答案。 我直接从我的数据框中绘图并想标记我的轴。 这是我正在使用的代码: 生成的图形只有“循环”作为 x 轴标签,没有 y 轴标签。 有什么我做错了吗? 或者有更好的方法吗? 提前致谢。 ...

6 ax.set_xticklabels 在 Matplotlib 中无法正常工作

我想用我的年份序列替换默认的 x-tick 标签,使用以下代码: 但是,Matplotlib 将这个数字返回给我: 它不是从 2003 年开始,也不是在 2018 年结束。我该如何解决这个问题? 编辑:即使我将np.median(trans_es, axis=0)部分更改为range(1 ...

9 Matplotlib使用ax.set()旋转xticklabel

这是我一段时间以来一直感兴趣的东西。 显然,我们可以创建一个matplotlib图并旋转xticklabel这样的。 假设我宁愿使用字典来完成此操作。 我可以使用(几乎)相同的情节 我没有指定需要在props字典中旋转xticklabels。 有没有办法在字典中包含此信息? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM