1. 注释
import matplotlib. pyplot as plt
import numpy as np
x = np. arange( - 10 , 11 , 1 )
y = x* x
plt. plot( x, y)
plt. annotate( 'this is the bottom' , xy= ( 0 , 1 ) , xytext= ( 0 , 20 ) ,
arrowprops= dict ( facecolor= 'r' , frac= 0.2 , headwidth= 30 , width= 20 ) )
plt. show( )
2. 文字
import matplotlib. pyplot as plt
import numpy as np
x = np. arange( - 11 , 10 , 1 )
y = x* x
plt. plot( x, y)
plt. text( - 2 , 40 , 'function:y=x*x' , family= 'serif' , size= 20 , color= 'r' ,
style= 'italic' , weight= 'black' )
plt. text( - 2 , 20 , 'function:y=x*x' , family= 'sans-serif' , size= 20 , color= 'g' ,
style= 'oblique' , weight= 'light' , bbox= dict ( facecolor= 'r' , alpha= 0.2 ) )
plt. show( )
3. Tex 公式
import matplotlib. pyplot as plt
import numpy as np
fig = plt. figure( )
ax = fig. add_subplot( 111 )
ax. set_xlim( [ 1 , 7 ] )
ax. set_ylim( [ 1 , 5 ] )
ax. text( 2 , 4 , r"$ \alpha_i \beta_j \pi \lambda \omega $" , size= 25 )
ax. text( 4 , 4 , r"$ \sin(0)=\cos(\frac{\pi}{2}) $" , size= 25 )
ax. text( 2 , 2 , r"$ \lim_{x \rightarrow y} \frac{1}{x^3} $" , size= 25 )
ax. text( 4 , 2 , r"$ \sqrt[4]{x}=\sqrt{y} $" , size= 25 )
plt. show( )
4. 区域填充
import matplotlib. pyplot as plt
import numpy as np
x = np. linspace( 0 , 5 * np. pi, 1000 )
y1 = np. sin( x)
y2 = np. sin( 2 * x)
plt. plot( x, y1)
plt. plot( x, y2)
plt. fill( x, y1, 'b' , alpha= 0.3 )
plt. fill( x, y2, 'r' , alpha= 0.3 )
fig = plt. figure( )
ax = plt. gca( )
ax. plot( x, y1, color= 'r' )
ax. plot( x, y2, color= 'b' )
ax. fill_between( x, y1, y2, where= y1>= y2, facecolor= 'yellow' , interpolate= True )
ax. fill_between( x, y1, y2, where= y2> y1, facecolor= 'green' , interpolate= True )
plt. show( )
5. 形状
import matplotlib. patches as mpatches
fig, ax = plt. subplots( )
xy1 = np. array( [ 0.2 , 0.2 ] )
xy2 = np. array( [ 0.2 , 0.8 ] )
xy3 = np. array( [ 0.8 , 0.2 ] )
xy4 = np. array( [ 0.8 , 0.8 ] )
circle = mpatches. Circle( xy1, 0.05 )
ax. add_patch( circle)
rect = mpatches. Rectangle( xy2, 0.2 , 0.1 , color= 'r' )
ax. add_patch( rect)
polygon = mpatches. RegularPolygon( xy3, 6 , 0.1 , color= 'g' )
ax. add_patch( polygon)
ellipes = mpatches. Ellipse( xy4, 0.4 , 0.2 , color= 'y' )
ax. add_patch( ellipes)
plt. axis( 'equal' )
plt. grid( )
plt. show( )
6. 美化
plt. style. use( 'ggplot' )
fig, axes = plt. subplots( ncols= 2 , nrows= 2 )
ax1, ax2, ax3, ax4 = axes. ravel( )
x, y = np. random. normal( size= ( 2 , 100 ) )
ax1. plot( x, y, 'o' )
x = np. arange( 0 , 10 )
y = np. arange( 0 , 10 )
ncolors = len ( plt. rcParams[ 'axes.color_cycle' ] )
shift = np. linspace( 0 , 10 , ncolors)
for s in shift:
ax2. plot( x, y+ s, '-' )
x = np. arange( 5 )
y1, y2, y3 = np. random. randint( 1 , 25 , size= ( 3 , 5 ) )
width = 0.25
ax3. bar( x, y1, width)
ax3. bar( x+ width, y2, width, color= plt. rcParams[ 'axes.color_cycle' ] [ 2 ] )
ax3. bar( x+ 2 * width, y2, width, color= plt. rcParams[ 'axes.color_cycle' ] [ 3 ] )
for i, color in enumerate ( plt. rcParams[ 'axes.color_cycle' ] ) :
xy = np. random. normal( size= 2 )
ax4. add_patch( plt. Circle( xy, radius= 0.3 , color= color) )
ax4. axis( 'equal' )
plt. show( )
7. 极坐标
r = np. arange( 1 , 6 , 1 )
pi_two = np. pi* 2
theta = [ 0 , pi_two/ 8 , 2 * pi_two/ 8 , 3 * pi_two/ 8 , 4 * pi_two/ 8 ,
5 * pi_two/ 8 , 6 * pi_two/ 8 , 7 * pi_two/ 8 , 8 * pi_two/ 8 ]
theta = [ 0 , np. pi/ 2 , np. pi, 3 * np. pi/ 2 , 2 * np. pi]
ax = plt. subplot( 111 , projection= 'polar' )
ax. plot( theta, color= 'r' , linewidth= 3 )
ax. grid( True )
plt. show( )
8. 函数积分
import matplotlib. pyplot as plt
import numpy as np
from matplotlib. patches import Polygon
def func ( x) :
return - ( x- 2 ) * ( x- 8 ) + 40
x = np. linspace( 0 , 10 )
y = func( x)
fig, ax = plt. subplots( )
plt. plot( x, y, 'r' , linewidth= 2 )
a = 2
b = 9
ax. set_xticks( [ a, b] )
ax. set_yticks( [ ] )
ax. set_xticklabels( [ '$a$' , '$b$' ] )
ix = np. linspace( a, b)
iy = func( ix)
ixy = zip ( ix, iy)
verts = [ ( a, 0 ) ] + list ( ixy) + [ ( b, 0 ) ]
poly = Polygon( verts, facecolor= '0.9' , edgecolor= '0.5' )
x_math = ( a+ b) * 0.5 * 0.7
y_math = 35
plt. text( x_math, y_math, r'$\int_a^b (-(x-2)*(x-8)+40)dx$' , fontsize= 20 , horizontalalignment = 'center' )
plt. ylim( ymin = 25 )
ax. add_patch( poly)
plt. figtext( 0.9 , 0.05 , '$x$' )
plt. figtext( 0.1 , 0.9 , '$y$' )
plt. show( )
9. 散点—条形图
plt. style. use( 'ggplot' )
x = np. random. randn( 200 )
y = x + np. random. randn* 0.5
margin_border = 0.1
width = 0.6
margin_between = 0.02
height = 0.2
left_s = margin_border
bottom_s = margin_border
height_s = width
width_s = width
left_x = margin_border
bottom_x = margin_border + width + margin_between
height_x = height
width_x = width
left_y = margin_border + width + margin_between
bottom_y = margin_border
height_y = width
width_y = height
plt. figure( 1 , figsize= ( 8 , 8 ) )
rect_s = [ left_s, bottom_s, width_s, height_s]
rect_x = [ left_x, bottom_x, width_x, height_x]
rect_y = [ left_y, bottom_y, width_y, height_y]
axScatter = plt. axes( rect_s)
axHistX = plt. axes( rect_x)
axHistY = plt. axes( rect_y)
axHistX. set_xticks( [ ] )
axHistX. set_yticks( [ ] )
axScatter. scatter( x, y)
bin_width = 0.25
xymax = np. max ( [ np. max ( np. fabs( x) ) , np. max ( np. fabs( y) ) ] )
lim = int ( xymax / bin_width+ 1 ) * bin_width
axScatter. set_xlim( - lim, lim)
axScatter. set_ylim( - lim, lim)
bins = np. arange( - lim, lim+ bin_width, bin_width)
axHistX. hist( x, bins= bins)
axHistY. hist( y, bins= bins, orientation= 'horizontal' )
axHistX. set_xlim( axScatter. get_xlim( ) )
axHistY. set_ylim( axScatter. get_ylim( ) )
plt. title( 'Scatter and Hist' )
plt. show( )