Discussion:
[Matplotlib-users] Draggable is not working on multiple legends of plots which are generated with twinx()
liu lily
2015-03-11 12:56:49 UTC
Permalink
Hi, all:

I have two legends, as below, I find that I can't drag the first legend,
what is the problem? how to deal with it? thanks!

import matplotlib.pyplot as plt

fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()

ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")

leg1 = ax1.legend()
leg2 = ax2.legend()

leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
Thomas Caswell
2015-03-11 13:22:40 UTC
Permalink
The mouse events only propagate to the top axes. You will have to add both
legends to the same (top) axes.

See http://matplotlib.org/users/legend_guide.html#multiple-legend


Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first legend,
what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for
all
things parallel software development, from weekly thought leadership blogs
to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
liu lily
2015-03-11 14:05:42 UTC
Permalink
I dont understand
you say it is the first axe
but why in my case, only the second legend is draggable? it is in the
second axe

besides, since I have to use both y-axis on the left and on the right, it
seems I have to have two axes,
are there any workarounds? thanks!
Post by Thomas Caswell
The mouse events only propagate to the top axes. You will have to add
both legends to the same (top) axes.
See http://matplotlib.org/users/legend_guide.html#multiple-legend
Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first legend,
what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Benjamin Root
2015-03-11 14:54:09 UTC
Permalink
By "top" he means "whichever axes was added most recently". When twining,
the new axes is added on top of the original axes.

I hope that clears it up.

Ben Root
Post by liu lily
I dont understand
you say it is the first axe
but why in my case, only the second legend is draggable? it is in the
second axe
besides, since I have to use both y-axis on the left and on the right, it
seems I have to have two axes,
are there any workarounds? thanks!
Post by Thomas Caswell
The mouse events only propagate to the top axes. You will have to add
both legends to the same (top) axes.
See http://matplotlib.org/users/legend_guide.html#multiple-legend
Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first legend,
what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for
all
things parallel software development, from weekly thought leadership blogs
to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
liu lily
2015-03-11 14:58:10 UTC
Permalink
thanks,
then are there any workaround on my case?
or are there any other libaries which I CAN use to plot and manipulate the
GUI?
Post by Benjamin Root
By "top" he means "whichever axes was added most recently". When twining,
the new axes is added on top of the original axes.
I hope that clears it up.
Ben Root
Post by liu lily
I dont understand
you say it is the first axe
but why in my case, only the second legend is draggable? it is in the
second axe
besides, since I have to use both y-axis on the left and on the right, it
seems I have to have two axes,
are there any workarounds? thanks!
Post by Thomas Caswell
The mouse events only propagate to the top axes. You will have to add
both legends to the same (top) axes.
See http://matplotlib.org/users/legend_guide.html#multiple-legend
Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first
legend, what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Thomas Caswell
2015-03-11 15:02:38 UTC
Permalink
As I said in the first email, you need to put both legend artists on the
top axes. The link is to the documentation on _how_ to put more than one
legend in the same axes.

Tom
Post by liu lily
thanks,
then are there any workaround on my case?
or are there any other libaries which I CAN use to plot and manipulate the
GUI?
Post by Benjamin Root
By "top" he means "whichever axes was added most recently". When twining,
the new axes is added on top of the original axes.
I hope that clears it up.
Ben Root
Post by liu lily
I dont understand
you say it is the first axe
but why in my case, only the second legend is draggable? it is in the
second axe
besides, since I have to use both y-axis on the left and on the right,
it seems I have to have two axes,
are there any workarounds? thanks!
Post by Thomas Caswell
The mouse events only propagate to the top axes. You will have to add
both legends to the same (top) axes.
See http://matplotlib.org/users/legend_guide.html#multiple-legend
Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first
legend, what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Benjamin Root
2015-03-11 15:03:45 UTC
Permalink
Thomas described the work-around and provided a link. Put both of the
legends on the second axes. It is a kludge, for sure, but it is all you can
do.
Post by liu lily
thanks,
then are there any workaround on my case?
or are there any other libaries which I CAN use to plot and manipulate the
GUI?
Post by Benjamin Root
By "top" he means "whichever axes was added most recently". When twining,
the new axes is added on top of the original axes.
I hope that clears it up.
Ben Root
Post by liu lily
I dont understand
you say it is the first axe
but why in my case, only the second legend is draggable? it is in the
second axe
besides, since I have to use both y-axis on the left and on the right,
it seems I have to have two axes,
are there any workarounds? thanks!
Post by Thomas Caswell
The mouse events only propagate to the top axes. You will have to add
both legends to the same (top) axes.
See http://matplotlib.org/users/legend_guide.html#multiple-legend
Tom
Post by liu lily
I have two legends, as below, I find that I can't drag the first
legend, what is the problem? how to deal with it? thanks!
import matplotlib.pyplot as plt
fig1, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([1,2,3],[0.1,0.82,0.3],'y*', label="one")
ax2.plot([1,2,3],[5,6,7],'ro', label="two")
leg1 = ax1.legend()
leg2 = ax2.legend()
leg1.draggable(state=True)
leg2.draggable(state=True)
plt.show()
------------------------------------------------------------
------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website,
sponsored
by Intel and developed in partnership with Slashdot Media, is your hub
for all
things parallel software development, from weekly thought leadership
blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Loading...