Simple plot
Info |
---|
Visit this page for full documentation on simple plots using pyplot. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import numpy as np import matplotlib.pyplot as plt # Evenly sampled time from 0s to 10s at 200ms intervals t = np.arange(0.0, 10.0, 0.2) # Plotting t at x-axis and sin(t) at y-axis plt.plot(t, np.sin(t)) # Naming the title and both axis plt.title('Sinus function') plt.ylabel('sin(t)') plt.xlabel('t [s]') # Need to call the show() function at the end to display my figure plt.show() |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import numpy as np import matplotlib.pyplot as plt # Evenly sampled time at 200ms intervals t = np.arange(0.0, 5.0, 0.2) # plot() can plot several lines in the same figure. To seperate the different lines # from eachother, we may change the line style and format strings. # See the plot() documentation for a complete list of line styles and format strings. # The following lines have red dashes, blue squares and green triangles plt.plot(t, t, 'r--', label='Linear line') plt.plot(t, t**2, color='blue', linestyle='none', marker='s', label='Second degree polynom') plt.plot(t, t**3, 'g^', label='Third degree polynom') # To describe our plot even more detailed we can draw the labels we previously gave our lines using legend. plt.legend(loc='upper left') # The function axis() sets the axis sizes, and takes the argument [xmin, xmax, ymin, ymax] plt.axis([0, 5, 0, 100]) plt.title('Mulitple polynoms') plt.show() |
Info |
---|
More in-depth plot() documentation and legend() documentation. |
Multiple figures and subplots
Info |
---|
A very good and more detailed guide on subplots and figures can be found at this link. |
Quiver plot
Info |
---|
More in-depth quiver documentation and functions. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import numpy as np import matplotlib.pyplot as plt # X and Y define the arrow locations X, Y = np.meshgrid(np.arange(0, 2 * np.pi, .2), np.arange(0, 2 * np.pi, .2)) # U and V define the arrow directions, respectively in x- and y-direction U = np.cos(X) V = np.sin(Y) # Call siganture: quiver([X, Y], U, V, [C]), where C optionally sets the color plt.quiver(X, Y, U, V) plt.title('Simple quiver plot') plt.show() |
Note |
---|
The plot autoscaling does not take into account the arrows, so those on the boundaries may reach out of the picture. This is not an easy problem to solve in a perfectly general way. The recommended workaround is to manually set the Axes limits in such a case. An example showing with only autoscaling vs manually is shown below. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import numpy as np import matplotlib.pyplot as plt # X and Y define the arrow locations # This setup gives us 10 arrows in width and height, as our interval is from -5 to 5 with step 1 X = np.arange(-5, 5, 1) Y = np.arange(-5, 5, 1) # U and V define the arrow directions, respectively in x- and y-direction U, V = np.meshgrid(3*X, 3*Y) plt.figure() plt.subplot(121) plt.quiver(X, Y, U, V) plt.title('Only autoscaling') plt.subplot(122) plt.quiver(X, Y, U, V) # Here we specify the axes. How much extra space you need depends on the arrow size and direction, # and must therefor be adapted each time plt.axis([-6.5, 5.5, -6.5, 5.5]) plt.title('Manually set axes') plt.show() |