| Line 294: |
Line 294: |
| | </syntaxhighlight> | | </syntaxhighlight> |
| | | | |
| − | === Ploting live data === | + | ===Ploting live data=== |
| | <syntaxhighlight lang="python3"> | | <syntaxhighlight lang="python3"> |
| | import random | | import random |
| Line 327: |
Line 327: |
| | ani = FuncAnimation(plt.gcf(), animate, interval=1000) | | ani = FuncAnimation(plt.gcf(), animate, interval=1000) |
| | | | |
| | + | plt.tight_layout() |
| | + | plt.show() |
| | + | # ---------------------------------------------------------- |
| | + | # Another way to do it without clearing the Axis |
| | + | from itertools import count |
| | + | import pandas as pd |
| | + | import matplotlib.pyplot as plt |
| | + | from matplotlib.animation import FuncAnimation |
| | + | |
| | + | plt.style.use('fivethirtyeight') |
| | + | |
| | + | x_vals = [] |
| | + | y_vals = [] |
| | + | |
| | + | plt.plot([], [], label='Channel 1') |
| | + | plt.plot([], [], label='Channel 2') |
| | + | |
| | + | |
| | + | def animate(i): |
| | + | data = pd.read_csv('data.csv') |
| | + | x = data['x_value'] |
| | + | y1 = data['total_1'] |
| | + | y2 = data['total_2'] |
| | + | |
| | + | ax = plt.gca() |
| | + | line1, line2 = ax.lines |
| | + | |
| | + | line1.set_data(x, y1) |
| | + | line2.set_data(x, y2) |
| | + | |
| | + | xlim_low, xlim_high = ax.get_xlim() |
| | + | ylim_low, ylim_high = ax.get_ylim() |
| | + | |
| | + | ax.set_xlim(xlim_low, (x.max() + 5)) |
| | + | |
| | + | y1max = y1.max() |
| | + | y2max = y2.max() |
| | + | current_ymax = y1max if (y1max > y2max) else y2max |
| | + | |
| | + | y1min = y1.min() |
| | + | y2min = y2.min() |
| | + | current_ymin = y1min if (y1min < y2min) else y2min |
| | + | |
| | + | ax.set_ylim((current_ymin - 5), (current_ymax + 5)) |
| | + | |
| | + | |
| | + | ani = FuncAnimation(plt.gcf(), animate, interval=1000) |
| | + | |
| | + | plt.legend() |
| | plt.tight_layout() | | plt.tight_layout() |
| | plt.show() | | plt.show() |
| | </syntaxhighlight> | | </syntaxhighlight> |