Difference between ax.set_xlabel() and ax.xaxis.set_label() in MatplotLib 3.0.1
(This may be a naive question. Pardon me if so.)
I am using Python 3.7.1 and MatplotLib 3.0.1.
In below simple code, I used different ways to assign labels to axes. They seem to be equivalent from an OO perspective. But only the x axis
label shows. Why?
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
In below image, you can see only the label x axis
is shown.
ADD 1
According to here, it seems the matplotlib.axis.XAxis.set_label()
approach should work.
In my case, the ax.xaxis
is of type mpl_toolkits.mplot3d.axis3d.XAxis
. It's a little different type. But I think it should work as well.
python python-3.x matplotlib mplot3d
add a comment |
(This may be a naive question. Pardon me if so.)
I am using Python 3.7.1 and MatplotLib 3.0.1.
In below simple code, I used different ways to assign labels to axes. They seem to be equivalent from an OO perspective. But only the x axis
label shows. Why?
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
In below image, you can see only the label x axis
is shown.
ADD 1
According to here, it seems the matplotlib.axis.XAxis.set_label()
approach should work.
In my case, the ax.xaxis
is of type mpl_toolkits.mplot3d.axis3d.XAxis
. It's a little different type. But I think it should work as well.
python python-3.x matplotlib mplot3d
add a comment |
(This may be a naive question. Pardon me if so.)
I am using Python 3.7.1 and MatplotLib 3.0.1.
In below simple code, I used different ways to assign labels to axes. They seem to be equivalent from an OO perspective. But only the x axis
label shows. Why?
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
In below image, you can see only the label x axis
is shown.
ADD 1
According to here, it seems the matplotlib.axis.XAxis.set_label()
approach should work.
In my case, the ax.xaxis
is of type mpl_toolkits.mplot3d.axis3d.XAxis
. It's a little different type. But I think it should work as well.
python python-3.x matplotlib mplot3d
(This may be a naive question. Pardon me if so.)
I am using Python 3.7.1 and MatplotLib 3.0.1.
In below simple code, I used different ways to assign labels to axes. They seem to be equivalent from an OO perspective. But only the x axis
label shows. Why?
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
In below image, you can see only the label x axis
is shown.
ADD 1
According to here, it seems the matplotlib.axis.XAxis.set_label()
approach should work.
In my case, the ax.xaxis
is of type mpl_toolkits.mplot3d.axis3d.XAxis
. It's a little different type. But I think it should work as well.
python python-3.x matplotlib mplot3d
python python-3.x matplotlib mplot3d
edited Nov 15 '18 at 3:25
DavidG
11.5k103544
11.5k103544
asked Nov 15 '18 at 2:44
smwikipediasmwikipedia
21.9k64216372
21.9k64216372
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
There are several things called "labels" in matplotlib. There are e.g. axis labels, set via set_xlabel
, there are tick labels, set via set_ticklabels
, and there are artist labels, set via set_label
.
Every artist in matplotlib has a label attribute. You usually encounter it when setting a label for it to be shown in the legend,
plt.plot(..., label="my label")
but it may be helpful for other cases as well. The above is equivalent to
line, = plt.plot(...)
line.set_label("mylabel")
So not only the Line2D
object created by plot
has a label, but equally the matplotlib.axis.XAxis
has a label. This is the one you set with ax.yaxis.set_label
. However, this is not by default taken into account when producing a legend, so its usefulness is questionable for the end user.
For the labels of the axes, set_ylabel
is really the method to use for setting the ylabel. Internally, this would call yaxis.set_label_text
, so as correctly pointed out by @DavidG, you can replace ax.set_ylabel(..)
by ax.yaxis.set_label_text(..)
(except for an additional argument labelpad
that is taken by set_ylabel
, but not by set_label_text
.
add a comment |
Looking at the documentation you have shown for matplotlib.axis.XAxis.set_label()
it appears this is to do with assigning a label to the axis itself for potential use in a legend (see @ImportanceOfBeingErnest's answer for more explanation)
In any case, the equivalent to ax.set_xlabel
is matplotlib.axis.Axis.set_label_text
Therefore changing the code to:
ax.set_xlabel('x axis')
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')
Gives the desired output:
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311685%2fdifference-between-ax-set-xlabel-and-ax-xaxis-set-label-in-matplotlib-3-0-1%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
There are several things called "labels" in matplotlib. There are e.g. axis labels, set via set_xlabel
, there are tick labels, set via set_ticklabels
, and there are artist labels, set via set_label
.
Every artist in matplotlib has a label attribute. You usually encounter it when setting a label for it to be shown in the legend,
plt.plot(..., label="my label")
but it may be helpful for other cases as well. The above is equivalent to
line, = plt.plot(...)
line.set_label("mylabel")
So not only the Line2D
object created by plot
has a label, but equally the matplotlib.axis.XAxis
has a label. This is the one you set with ax.yaxis.set_label
. However, this is not by default taken into account when producing a legend, so its usefulness is questionable for the end user.
For the labels of the axes, set_ylabel
is really the method to use for setting the ylabel. Internally, this would call yaxis.set_label_text
, so as correctly pointed out by @DavidG, you can replace ax.set_ylabel(..)
by ax.yaxis.set_label_text(..)
(except for an additional argument labelpad
that is taken by set_ylabel
, but not by set_label_text
.
add a comment |
There are several things called "labels" in matplotlib. There are e.g. axis labels, set via set_xlabel
, there are tick labels, set via set_ticklabels
, and there are artist labels, set via set_label
.
Every artist in matplotlib has a label attribute. You usually encounter it when setting a label for it to be shown in the legend,
plt.plot(..., label="my label")
but it may be helpful for other cases as well. The above is equivalent to
line, = plt.plot(...)
line.set_label("mylabel")
So not only the Line2D
object created by plot
has a label, but equally the matplotlib.axis.XAxis
has a label. This is the one you set with ax.yaxis.set_label
. However, this is not by default taken into account when producing a legend, so its usefulness is questionable for the end user.
For the labels of the axes, set_ylabel
is really the method to use for setting the ylabel. Internally, this would call yaxis.set_label_text
, so as correctly pointed out by @DavidG, you can replace ax.set_ylabel(..)
by ax.yaxis.set_label_text(..)
(except for an additional argument labelpad
that is taken by set_ylabel
, but not by set_label_text
.
add a comment |
There are several things called "labels" in matplotlib. There are e.g. axis labels, set via set_xlabel
, there are tick labels, set via set_ticklabels
, and there are artist labels, set via set_label
.
Every artist in matplotlib has a label attribute. You usually encounter it when setting a label for it to be shown in the legend,
plt.plot(..., label="my label")
but it may be helpful for other cases as well. The above is equivalent to
line, = plt.plot(...)
line.set_label("mylabel")
So not only the Line2D
object created by plot
has a label, but equally the matplotlib.axis.XAxis
has a label. This is the one you set with ax.yaxis.set_label
. However, this is not by default taken into account when producing a legend, so its usefulness is questionable for the end user.
For the labels of the axes, set_ylabel
is really the method to use for setting the ylabel. Internally, this would call yaxis.set_label_text
, so as correctly pointed out by @DavidG, you can replace ax.set_ylabel(..)
by ax.yaxis.set_label_text(..)
(except for an additional argument labelpad
that is taken by set_ylabel
, but not by set_label_text
.
There are several things called "labels" in matplotlib. There are e.g. axis labels, set via set_xlabel
, there are tick labels, set via set_ticklabels
, and there are artist labels, set via set_label
.
Every artist in matplotlib has a label attribute. You usually encounter it when setting a label for it to be shown in the legend,
plt.plot(..., label="my label")
but it may be helpful for other cases as well. The above is equivalent to
line, = plt.plot(...)
line.set_label("mylabel")
So not only the Line2D
object created by plot
has a label, but equally the matplotlib.axis.XAxis
has a label. This is the one you set with ax.yaxis.set_label
. However, this is not by default taken into account when producing a legend, so its usefulness is questionable for the end user.
For the labels of the axes, set_ylabel
is really the method to use for setting the ylabel. Internally, this would call yaxis.set_label_text
, so as correctly pointed out by @DavidG, you can replace ax.set_ylabel(..)
by ax.yaxis.set_label_text(..)
(except for an additional argument labelpad
that is taken by set_ylabel
, but not by set_label_text
.
answered Nov 15 '18 at 3:48
ImportanceOfBeingErnestImportanceOfBeingErnest
139k13162240
139k13162240
add a comment |
add a comment |
Looking at the documentation you have shown for matplotlib.axis.XAxis.set_label()
it appears this is to do with assigning a label to the axis itself for potential use in a legend (see @ImportanceOfBeingErnest's answer for more explanation)
In any case, the equivalent to ax.set_xlabel
is matplotlib.axis.Axis.set_label_text
Therefore changing the code to:
ax.set_xlabel('x axis')
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')
Gives the desired output:
add a comment |
Looking at the documentation you have shown for matplotlib.axis.XAxis.set_label()
it appears this is to do with assigning a label to the axis itself for potential use in a legend (see @ImportanceOfBeingErnest's answer for more explanation)
In any case, the equivalent to ax.set_xlabel
is matplotlib.axis.Axis.set_label_text
Therefore changing the code to:
ax.set_xlabel('x axis')
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')
Gives the desired output:
add a comment |
Looking at the documentation you have shown for matplotlib.axis.XAxis.set_label()
it appears this is to do with assigning a label to the axis itself for potential use in a legend (see @ImportanceOfBeingErnest's answer for more explanation)
In any case, the equivalent to ax.set_xlabel
is matplotlib.axis.Axis.set_label_text
Therefore changing the code to:
ax.set_xlabel('x axis')
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')
Gives the desired output:
Looking at the documentation you have shown for matplotlib.axis.XAxis.set_label()
it appears this is to do with assigning a label to the axis itself for potential use in a legend (see @ImportanceOfBeingErnest's answer for more explanation)
In any case, the equivalent to ax.set_xlabel
is matplotlib.axis.Axis.set_label_text
Therefore changing the code to:
ax.set_xlabel('x axis')
ax.yaxis.set_label_text('y axis')
ax.zaxis.set_label_text('z axis')
Gives the desired output:
edited Nov 15 '18 at 3:56
answered Nov 15 '18 at 3:21
DavidGDavidG
11.5k103544
11.5k103544
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311685%2fdifference-between-ax-set-xlabel-and-ax-xaxis-set-label-in-matplotlib-3-0-1%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown