How to switch between diagrams with a button in Matplotlib
up vote
0
down vote
favorite
Is there an easy way, to switch between two or more diagrams with a button? I would like, for example be able to switch between these two diagrams with a button instead of showing them one after the other.
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
x_values = [5, 4, 3, 2, 1]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
I know there are examples for this problem out there, but I simply can't get it to work...
Here is the link, where they show how to do it, but I don't understand how to do it...
Link: https://matplotlib.org/gallery/widgets/buttons.html
python matplotlib button diagram
add a comment |
up vote
0
down vote
favorite
Is there an easy way, to switch between two or more diagrams with a button? I would like, for example be able to switch between these two diagrams with a button instead of showing them one after the other.
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
x_values = [5, 4, 3, 2, 1]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
I know there are examples for this problem out there, but I simply can't get it to work...
Here is the link, where they show how to do it, but I don't understand how to do it...
Link: https://matplotlib.org/gallery/widgets/buttons.html
python matplotlib button diagram
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Is there an easy way, to switch between two or more diagrams with a button? I would like, for example be able to switch between these two diagrams with a button instead of showing them one after the other.
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
x_values = [5, 4, 3, 2, 1]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
I know there are examples for this problem out there, but I simply can't get it to work...
Here is the link, where they show how to do it, but I don't understand how to do it...
Link: https://matplotlib.org/gallery/widgets/buttons.html
python matplotlib button diagram
Is there an easy way, to switch between two or more diagrams with a button? I would like, for example be able to switch between these two diagrams with a button instead of showing them one after the other.
import matplotlib.pyplot as plt
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
x_values = [5, 4, 3, 2, 1]
y_values = [1, 4, 9, 16, 25]
plt.bar(x_values, y_values)
plt.show()
I know there are examples for this problem out there, but I simply can't get it to work...
Here is the link, where they show how to do it, but I don't understand how to do it...
Link: https://matplotlib.org/gallery/widgets/buttons.html
python matplotlib button diagram
python matplotlib button diagram
asked Nov 10 at 17:47
Mysterious Challenger
125
125
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
accepted
Here I modified code from the link you supplied so that it uses different sets of values depending on what values are currently plotted.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
x1_values = [1, 2, 3, 4, 5]
y1_values = [1, 4, 9, 16, 25]
l, = plt.plot(x1_values, y1_values)
class Index(object):
def __init__(self):
self.current = 1
self.x1 = [5, 4, 3, 2, 1]
self.y1 = [1, 4, 9, 16, 25]
self.x2 = [1, 2, 3, 4, 5]
self.y2 = [1, 4, 9, 16, 25]
def plot(self, x):
self.current += 1
if self.current%2:
self.values1()
else:
self.values2()
def values1(self):
l.set_xdata(self.x1)
l.set_ydata(self.y1)
plt.draw()
def values2(self):
l.set_xdata(self.x2)
l.set_ydata(self.y2)
plt.draw()
callback = Index()
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bprev = Button(axnext, 'Switch')
bprev.on_clicked(callback.plot)
plt.show()
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
add a comment |
up vote
0
down vote
For those, who want to switch between bar- or plot diagrams (works for both types of diagram). I also think it is much cleaner to do it this way.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class Index(object):
def start(self, event=None):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [3, 5, 2, 19, 1]
ax.bar(x_values, y_values)
plt.draw()
def next(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [20, 15, 10, 5, 1]
ax.bar(x_values, y_values)
plt.draw()
def prev(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [1, 5, 10, 15, 20]
ax.bar(x_values, y_values)
plt.draw()
ax = plt.gca()
callback = Index()
callback.start()
axprev = plt.axes([0.59, 0.002, 0.1, 0.075])
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
axstart = plt.axes([0.7, 0.002, 0.1, 0.075])
bstart = Button(axstart, 'Start')
bstart.on_clicked(callback.start)
axnext = plt.axes([0.81, 0.002, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
plt.show()
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Here I modified code from the link you supplied so that it uses different sets of values depending on what values are currently plotted.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
x1_values = [1, 2, 3, 4, 5]
y1_values = [1, 4, 9, 16, 25]
l, = plt.plot(x1_values, y1_values)
class Index(object):
def __init__(self):
self.current = 1
self.x1 = [5, 4, 3, 2, 1]
self.y1 = [1, 4, 9, 16, 25]
self.x2 = [1, 2, 3, 4, 5]
self.y2 = [1, 4, 9, 16, 25]
def plot(self, x):
self.current += 1
if self.current%2:
self.values1()
else:
self.values2()
def values1(self):
l.set_xdata(self.x1)
l.set_ydata(self.y1)
plt.draw()
def values2(self):
l.set_xdata(self.x2)
l.set_ydata(self.y2)
plt.draw()
callback = Index()
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bprev = Button(axnext, 'Switch')
bprev.on_clicked(callback.plot)
plt.show()
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
add a comment |
up vote
0
down vote
accepted
Here I modified code from the link you supplied so that it uses different sets of values depending on what values are currently plotted.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
x1_values = [1, 2, 3, 4, 5]
y1_values = [1, 4, 9, 16, 25]
l, = plt.plot(x1_values, y1_values)
class Index(object):
def __init__(self):
self.current = 1
self.x1 = [5, 4, 3, 2, 1]
self.y1 = [1, 4, 9, 16, 25]
self.x2 = [1, 2, 3, 4, 5]
self.y2 = [1, 4, 9, 16, 25]
def plot(self, x):
self.current += 1
if self.current%2:
self.values1()
else:
self.values2()
def values1(self):
l.set_xdata(self.x1)
l.set_ydata(self.y1)
plt.draw()
def values2(self):
l.set_xdata(self.x2)
l.set_ydata(self.y2)
plt.draw()
callback = Index()
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bprev = Button(axnext, 'Switch')
bprev.on_clicked(callback.plot)
plt.show()
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Here I modified code from the link you supplied so that it uses different sets of values depending on what values are currently plotted.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
x1_values = [1, 2, 3, 4, 5]
y1_values = [1, 4, 9, 16, 25]
l, = plt.plot(x1_values, y1_values)
class Index(object):
def __init__(self):
self.current = 1
self.x1 = [5, 4, 3, 2, 1]
self.y1 = [1, 4, 9, 16, 25]
self.x2 = [1, 2, 3, 4, 5]
self.y2 = [1, 4, 9, 16, 25]
def plot(self, x):
self.current += 1
if self.current%2:
self.values1()
else:
self.values2()
def values1(self):
l.set_xdata(self.x1)
l.set_ydata(self.y1)
plt.draw()
def values2(self):
l.set_xdata(self.x2)
l.set_ydata(self.y2)
plt.draw()
callback = Index()
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bprev = Button(axnext, 'Switch')
bprev.on_clicked(callback.plot)
plt.show()
Here I modified code from the link you supplied so that it uses different sets of values depending on what values are currently plotted.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
x1_values = [1, 2, 3, 4, 5]
y1_values = [1, 4, 9, 16, 25]
l, = plt.plot(x1_values, y1_values)
class Index(object):
def __init__(self):
self.current = 1
self.x1 = [5, 4, 3, 2, 1]
self.y1 = [1, 4, 9, 16, 25]
self.x2 = [1, 2, 3, 4, 5]
self.y2 = [1, 4, 9, 16, 25]
def plot(self, x):
self.current += 1
if self.current%2:
self.values1()
else:
self.values2()
def values1(self):
l.set_xdata(self.x1)
l.set_ydata(self.y1)
plt.draw()
def values2(self):
l.set_xdata(self.x2)
l.set_ydata(self.y2)
plt.draw()
callback = Index()
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bprev = Button(axnext, 'Switch')
bprev.on_clicked(callback.plot)
plt.show()
edited Nov 10 at 19:06
Mysterious Challenger
125
125
answered Nov 10 at 18:02
Filip Młynarski
33917
33917
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
add a comment |
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
Many thanks, much better to understand and to experiment with!
– Mysterious Challenger
Nov 10 at 18:11
add a comment |
up vote
0
down vote
For those, who want to switch between bar- or plot diagrams (works for both types of diagram). I also think it is much cleaner to do it this way.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class Index(object):
def start(self, event=None):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [3, 5, 2, 19, 1]
ax.bar(x_values, y_values)
plt.draw()
def next(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [20, 15, 10, 5, 1]
ax.bar(x_values, y_values)
plt.draw()
def prev(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [1, 5, 10, 15, 20]
ax.bar(x_values, y_values)
plt.draw()
ax = plt.gca()
callback = Index()
callback.start()
axprev = plt.axes([0.59, 0.002, 0.1, 0.075])
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
axstart = plt.axes([0.7, 0.002, 0.1, 0.075])
bstart = Button(axstart, 'Start')
bstart.on_clicked(callback.start)
axnext = plt.axes([0.81, 0.002, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
plt.show()
add a comment |
up vote
0
down vote
For those, who want to switch between bar- or plot diagrams (works for both types of diagram). I also think it is much cleaner to do it this way.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class Index(object):
def start(self, event=None):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [3, 5, 2, 19, 1]
ax.bar(x_values, y_values)
plt.draw()
def next(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [20, 15, 10, 5, 1]
ax.bar(x_values, y_values)
plt.draw()
def prev(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [1, 5, 10, 15, 20]
ax.bar(x_values, y_values)
plt.draw()
ax = plt.gca()
callback = Index()
callback.start()
axprev = plt.axes([0.59, 0.002, 0.1, 0.075])
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
axstart = plt.axes([0.7, 0.002, 0.1, 0.075])
bstart = Button(axstart, 'Start')
bstart.on_clicked(callback.start)
axnext = plt.axes([0.81, 0.002, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
plt.show()
add a comment |
up vote
0
down vote
up vote
0
down vote
For those, who want to switch between bar- or plot diagrams (works for both types of diagram). I also think it is much cleaner to do it this way.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class Index(object):
def start(self, event=None):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [3, 5, 2, 19, 1]
ax.bar(x_values, y_values)
plt.draw()
def next(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [20, 15, 10, 5, 1]
ax.bar(x_values, y_values)
plt.draw()
def prev(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [1, 5, 10, 15, 20]
ax.bar(x_values, y_values)
plt.draw()
ax = plt.gca()
callback = Index()
callback.start()
axprev = plt.axes([0.59, 0.002, 0.1, 0.075])
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
axstart = plt.axes([0.7, 0.002, 0.1, 0.075])
bstart = Button(axstart, 'Start')
bstart.on_clicked(callback.start)
axnext = plt.axes([0.81, 0.002, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
plt.show()
For those, who want to switch between bar- or plot diagrams (works for both types of diagram). I also think it is much cleaner to do it this way.
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
class Index(object):
def start(self, event=None):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [3, 5, 2, 19, 1]
ax.bar(x_values, y_values)
plt.draw()
def next(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [20, 15, 10, 5, 1]
ax.bar(x_values, y_values)
plt.draw()
def prev(self, event):
ax.clear()
x_values = [1, 2, 3, 4, 5]
y_values = [1, 5, 10, 15, 20]
ax.bar(x_values, y_values)
plt.draw()
ax = plt.gca()
callback = Index()
callback.start()
axprev = plt.axes([0.59, 0.002, 0.1, 0.075])
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)
axstart = plt.axes([0.7, 0.002, 0.1, 0.075])
bstart = Button(axstart, 'Start')
bstart.on_clicked(callback.start)
axnext = plt.axes([0.81, 0.002, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
plt.show()
answered 19 hours ago
Mysterious Challenger
125
125
add a comment |
add a comment |
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%2f53241759%2fhow-to-switch-between-diagrams-with-a-button-in-matplotlib%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