Created
August 16, 2017 06:26
-
-
Save kevingduck/cc0cf745b17716e03c9d529fe0a1ecf5 to your computer and use it in GitHub Desktop.
Motion Plot.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''This script records your device's orientation (accelerometer data) for 5 seconds, and then renders a simple plot of the gravity vector, using matplotlib.''' | |
import motion | |
import matplotlib.pyplot as plt | |
from time import sleep | |
import console | |
def main(): | |
console.alert('Motion Plot', 'When you tap Continue, accelerometer (motion) data will be recorded for 5 seconds.', 'Continue') | |
motion.start_updates() | |
sleep(0.2) | |
print('Capturing motion data...') | |
num_samples = 100 | |
data = [] | |
for i in range(num_samples): | |
sleep(0.05) | |
g = motion.get_gravity() | |
data.append(g) | |
motion.stop_updates() | |
print('Capture finished, plotting...') | |
x_values = [x*0.05 for x in range(num_samples)] | |
for i, color, label in zip(range(3), 'rgb', 'XYZ'): | |
plt.plot(x_values, [g[i] for g in data], color, label=label, lw=2) | |
plt.grid(True) | |
plt.xlabel('t') | |
plt.ylabel('G') | |
plt.gca().set_ylim([-1.0, 1.0]) | |
plt.legend() | |
plt.show() | |
if __name__ == '__main__': | |
main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
# Demo of a PathPatch object. | |
import matplotlib.path as mpath | |
import matplotlib.patches as mpatches | |
import matplotlib.pyplot as plt | |
fig, ax = plt.subplots() | |
Path = mpath.Path | |
path_data = [ | |
(Path.MOVETO, (1.58, -2.57)), | |
(Path.CURVE4, (0.35, -1.1)), | |
(Path.CURVE4, (-1.75, 2.0)), | |
(Path.CURVE4, (0.375, 2.0)), | |
(Path.LINETO, (0.85, 1.15)), | |
(Path.CURVE4, (2.2, 3.2)), | |
(Path.CURVE4, (3, 0.05)), | |
(Path.CURVE4, (2.0, -0.5)), | |
(Path.CLOSEPOLY, (1.58, -2.57)), | |
] | |
codes, verts = zip(*path_data) | |
path = mpath.Path(verts, codes) | |
patch = mpatches.PathPatch(path, facecolor='r', alpha=0.5) | |
ax.add_patch(patch) | |
# plot control points and connecting lines | |
x, y = zip(*path.vertices) | |
line, = ax.plot(x, y, 'go-') | |
ax.grid() | |
ax.axis('equal') | |
plt.show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
''' | |
Demo of a basic pie chart plus a few additional features. | |
In addition to the basic pie chart, this demo shows a few optional features: | |
* slice labels | |
* auto-labeling the percentage | |
* offsetting a slice with "explode" | |
* custom start angle | |
Note about the custom start angle: | |
The default ``startangle`` is 0, which would start the "Frogs" slice on the | |
positive x-axis. This example sets ``startangle = 90`` such that everything is | |
rotated counter-clockwise by 90 degrees, and the frog slice starts on the | |
positive y-axis. | |
''' | |
import matplotlib.pyplot as plt | |
# The slices will be ordered and plotted counter-clockwise. | |
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' | |
sizes = [15, 30, 45, 10] | |
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral'] | |
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs') | |
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=False, startangle=90) | |
# Set aspect ratio to be equal so that pie is drawn as a circle. | |
plt.axis('equal') | |
plt.show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
# Demo of a line plot on a polar axis. | |
import numpy as np | |
import matplotlib.pyplot as plt | |
r = np.arange(0, 3.0, 0.01) | |
theta = 2 * np.pi * r | |
ax = plt.subplot(111, polar=True) | |
ax.plot(theta, r, color='r', linewidth=3) | |
ax.set_rmax(2.0) | |
ax.grid(True) | |
ax.set_title("A line plot on a polar axis", va='bottom') | |
plt.show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
from pylab import * | |
t = arange(0.0, 2.0, 0.01) | |
s = sin(2*pi*t) | |
plot(t, s) | |
xlabel('time (s)') | |
ylabel('voltage (mV)') | |
title('About as simple as it gets, folks') | |
grid(True) | |
show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
''' | |
Demo of the `streamplot` function. | |
A streamplot, or streamline plot, is used to display 2D vector fields. | |
''' | |
import numpy as np | |
import matplotlib.pyplot as plt | |
Y, X = np.mgrid[-3:3:100j, -3:3:100j] | |
U = -1 - X**2 + Y | |
V = 1 + X - Y**2 | |
speed = np.sqrt(U*U + V*V) | |
plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn) | |
plt.colorbar() | |
plt.show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
# Simple demo with multiple subplots. | |
import numpy as np | |
import matplotlib.pyplot as plt | |
x1 = np.linspace(0.0, 5.0) | |
x2 = np.linspace(0.0, 2.0) | |
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1) | |
y2 = np.cos(2 * np.pi * x2) | |
plt.subplot(2, 1, 1) | |
plt.plot(x1, y1, 'yo-') | |
plt.title('A tale of 2 subplots') | |
plt.ylabel('Damped oscillation') | |
plt.subplot(2, 1, 2) | |
plt.plot(x2, y2, 'r.-') | |
plt.xlabel('time (s)') | |
plt.ylabel('Undamped') | |
plt.show() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
import matplotlib.pyplot as plt | |
with plt.xkcd(): | |
# Based on "The Data So Far" from XKCD by Randall Monroe | |
# http://xkcd.com/373/ | |
fig = plt.figure() | |
ax = fig.add_axes((0.1, 0.2, 0.8, 0.7)) | |
ax.bar([-0.125, 1.0-0.125], [0, 100], 0.25) | |
ax.spines['right'].set_color('none') | |
ax.spines['top'].set_color('none') | |
ax.xaxis.set_ticks_position('bottom') | |
ax.set_xticks([0, 1]) | |
ax.set_xlim([-0.5, 1.5]) | |
ax.set_ylim([0, 110]) | |
ax.set_xticklabels(['CONFIRMED BY\nEXPERIMENT', 'REFUTED BY\nEXPERIMENT']) | |
plt.yticks([]) | |
plt.title("CLAIMS OF SUPERNATURAL POWERS") | |
fig.text( | |
0.5, 0.05, | |
'"The Data So Far" from xkcd by Randall Monroe', | |
ha='center') | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment