1.设置线型、线宽和颜色
import numpy as np import matplotlib.pyplot as mp # xarray: <序列> 水平坐标序列 # yarray: <序列> 垂直坐标序列 mp.plot(xarray, yarray) #显示图表 mp.show()
(1)绘画折线图,水平线/垂直线
import numpy as np import matplotlib.pyplot as mp # vertical 绘制垂直线 mp.vlines(vval, ymin, ymax)#列的位置,起点坐标y,终点坐标y # horizotal 绘制水平线 mp.hlines(xval, xmin, xmax)#行的位置,起点坐标x,终点坐标x #显示图表 mp.show()
#基本绘图 import numpy as np import matplotlib.pyplot as mp xarray = np.arange(8) yarray = np.array([64,89,12,36,49,80,45,34]) #绘制折线图 mp.plot(xarray,yarray) #绘制水平线 mp.hlines(40,1,7) # mp.hlines([10,20,30,50],1,7) mp.hlines([10,20,30,50],[1,2,4,5],[7,5,4,3])#行的位置 起点位置 终点位置 #绘制垂直线 mp.vlines(4,20,80) mp.show()
(2)画一条正弦曲线,余弦曲线
#linestyle: 线型 "-" "--" ":" ".-" #linewidth: 线宽 # 数字 #color: <关键字参数> 颜色 # 英文颜色单词 或 常见颜色英文单词首字母 或 #495434 或 (1,1,1) 或 (1,1,1,1) #alpha: <关键字参数> 透明度 # 浮点数值 mp.plot(xarray, yarray, linestyle='', linewidth=1, color='', alpha=0.5)
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 mp.plot(x, sinx) mp.plot(x, cosx) mp.show()
2.设置坐标轴范围
#x_limt_min: <float> x轴范围最小值 #x_limit_max: <float> x轴范围最大值 mp.xlim(x_limt_min, x_limit_max) #y_limt_min: <float> y轴范围最小值 #y_limit_max: <float> y轴范围最大值 mp.ylim(y_limt_min, y_limit_max)
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 #设置可视区间 mp.xlim(0, np.pi+0.1) mp.ylim(0, 1+0.1) mp.plot(x, sinx) mp.plot(x, cosx) mp.show()
3.设置坐标刻度
#x_val_list: x轴刻度值序列 #x_text_list: x轴刻度标签文本序列 [可选] mp.xticks(x_val_list , x_text_list ) #y_val_list: y轴刻度值序列 #y_text_list: y轴刻度标签文本序列 [可选] mp.yticks(y_val_list , y_text_list )
案例:把横坐标的刻度显示为:0, π/2, π, 3π/2, 2π
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 # 设置刻度文本 vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi] texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0, r'$\frac{\pi}{2}$', r'$\pi$'] mp.xticks(vals, texts) mp.yticks([-1.0, -0.5, 0.5, 1]) mp.plot(x, sinx) mp.plot(x, cosx) mp.show()
4.设置坐标轴
坐标轴名:left / right / bottom / top
# 获取当前坐标轴字典,{'left':左轴,'right':右轴,'bottom':下轴,'top':上轴 } ax = mp.gca() # 获取其中某个坐标轴 axis = ax.spines['坐标轴名'] # 设置坐标轴的位置。 该方法需要传入2个元素的元组作为参数 # type: <str> 移动坐标轴的参照类型 一般为'data' (以数据的值作为移动参照值) # val: 参照值 axis.set_position(('data', val)) # 设置坐标轴的颜色 # color: <str> 颜色值字符串 axis.set_color(color)
案例:设置坐标轴至中心。
#设置坐标轴 ax = mp.gca() axis_b = ax.spines['bottom'] axis_b.set_position(('data', 0)) axis_l = ax.spines['left'] axis_l.set_position(('data', 0)) ax.spines['top'].set_color('none') ax.spines['right'].set_color('none')
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 # 设置刻度文本 vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi] texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0, r'$\frac{\pi}{2}$', r'$\pi$'] mp.xticks(vals, texts) mp.yticks([-1.0, -0.5, 0.5, 1]) # 设置坐标轴(移动) axis = mp.gca() axis.spines['top'].set_color('none') axis.spines['right'].set_color('none') axis.spines['left'].set_position(('data', 0)) axis.spines['bottom'].set_position(('data', 0)) mp.plot(x, sinx) mp.plot(x, cosx) mp.show()
5.图例
显示两条曲线的图例,并测试loc属性。
# 再绘制曲线时定义曲线的label # label: <关键字参数 str> 支持LaTex排版语法字符串 mp.plot(xarray, yarray ... label='', ...) # 设置图例的位置 # loc: <关键字参数> 制定图例的显示位置 (若不设置loc,则显示默认位置) # =============== ============= # Location String Location Code # =============== ============= # 'best' 0 # 'upper right' 1 # 'upper left' 2 # 'lower left' 3 # 'lower right' 4 # 'right' 5 # 'center left' 6 # 'center right' 7 # 'lower center' 8 # 'upper center' 9 # 'center' 10 # =============== ============= mp.legend(loc='')
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 # 设置刻度文本 vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi] texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0, r'$\frac{\pi}{2}$', r'$\pi$'] mp.xticks(vals, texts) mp.yticks([-1.0, -0.5, 0.5, 1]) # 设置坐标轴(移动) axis = mp.gca() axis.spines['top'].set_color('none') axis.spines['right'].set_color('none') axis.spines['left'].set_position(('data', 0)) axis.spines['bottom'].set_position(('data', 0)) mp.plot(x, sinx, linestyle='--', linewidth=2, color='dodgerblue', alpha=0.8, label=r'$y=sin(x)$') mp.plot(x, cosx, linestyle='-.', linewidth=2, color='orangered', alpha=0.8, label=r'$y=\frac{1}{2}cos(x)$') mp.show()
6.特殊点
# xarray: <序列> 所有需要标注点的水平坐标组成的序列 # yarray: <序列> 所有需要标注点的垂直坐标组成的序列 mp.scatter(xarray, yarray, marker='', #点型 ~ matplotlib.markers s=50, #大小 edgecolor='', #边缘色 facecolor='', #填充色 zorder=3 #绘制图层编号 (编号越大,图层越靠上)
案例:绘制当x=π/2时两条曲线上的特殊点。
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 # 设置刻度文本 vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi] texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0, r'$\frac{\pi}{2}$', r'$\pi$'] mp.xticks(vals, texts) mp.yticks([-1.0, -0.5, 0.5, 1]) # 设置坐标轴(移动) axis = mp.gca() axis.spines['top'].set_color('none') axis.spines['right'].set_color('none') axis.spines['left'].set_position(('data', 0)) axis.spines['bottom'].set_position(('data', 0)) mp.plot(x, sinx, linestyle='--', linewidth=2, color='dodgerblue', alpha=0.8, label=r'$y=sin(x)$') mp.plot(x, cosx, linestyle='-.', linewidth=2, color='orangered', alpha=0.8, label=r'$y=\frac{1}{2}cos(x)$') # 绘制特殊点 xs = [np.pi/2, np.pi/2] ys = [1, 0] mp.scatter(xs, ys, marker='o', edgecolor='red', facecolor='green', s=100, label='Points', zorder=3) mp.show()
7.备注
# 在图表中为某个点添加备注。包含备注文本,备注箭头等图像的设置。 mp.annotate( r'$\frac{\pi}{2}$', #备注中显示的文本内容 xycoords='data', #备注目标点所使用的坐标系(data表示数据坐标系) xy=(x, y), #备注目标点的坐标 textcoords='offset points', #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系) xytext=(x, y), #备注文本的坐标 fontsize=14, #备注文本的字体大小 arrowprops=dict() #使用字典定义文本指向目标点的箭头样式 )
arrowprops参数使用字典定义指向目标点的箭头样式
#arrowprops字典参数的常用key arrowprops=dict( arrowstyle='', #定义箭头样式 connectionstyle='' #定义连接线的样式 )
箭头样式(arrowstyle)字符串如下
============ ============================================= Name Attrs ============ ============================================= '-' None '->' head_length=0.4,head_width=0.2 '-[' widthB=1.0,lengthB=0.2,angleB=None '|-|' widthA=1.0,widthB=1.0 '-|>' head_length=0.4,head_width=0.2 '<-' head_length=0.4,head_width=0.2 '<->' head_length=0.4,head_width=0.2 '<|-' head_length=0.4,head_width=0.2 '<|-|>' head_length=0.4,head_width=0.2 'fancy' head_length=0.4,head_width=0.4,tail_width=0.4 'simple' head_length=0.5,head_width=0.5,tail_width=0.2 'wedge' tail_width=0.3,shrink_factor=0.5 ============ =============================================
连接线样式(connectionstyle)字符串如下
============ ============================================= Name Attrs ============ ============================================= 'angle' angleA=90,angleB=0,rad=0.0 'angle3' angleA=90,angleB=0` 'arc' angleA=0,angleB=0,armA=None,armB=None,rad=0.0 'arc3' rad=0.0 'bar' armA=0.0,armB=0.0,fraction=0.3,angle=None ============ =============================================
案例:为在某条曲线上的点添加备注,指明函数方程与值。
import numpy as np import matplotlib.pyplot as mp # 绘制正弦曲线 y=sin(x) x = np.linspace(-np.pi, np.pi, 1000) sinx = np.sin(x) # 绘制余弦曲线 y=cos(x) / 2 cosx = np.cos(x) / 2 #设置可视区间 # mp.xlim(0, np.pi+0.1) # mp.ylim(0, 1+0.1) # 设置刻度文本 vals = [-np.pi, -np.pi/2, 0, np.pi/2, np.pi] texts = [r'$-\pi$', r'$-\frac{\pi}{2}$', 0, r'$\frac{\pi}{2}$', r'$\pi$'] mp.xticks(vals, texts) mp.yticks([-1.0, -0.5, 0.5, 1]) # 移动坐标轴 axis = mp.gca() axis.spines['top'].set_color('none') axis.spines['right'].set_color('none') axis.spines['left'].set_position(('data', 0)) axis.spines['bottom'].set_position(('data', 0)) mp.plot(x, sinx, linestyle='--', linewidth=2, color='dodgerblue', alpha=0.8, label=r'$y=sin(x)$') mp.plot(x, cosx, linestyle='-.', linewidth=2, color='orangered', alpha=0.8, label=r'$y=\frac{1}{2}cos(x)$') # 绘制特殊点 xs = [np.pi/2, np.pi/2] ys = [1, 0] mp.scatter(xs, ys, marker='o', edgecolor='red', facecolor='green', s=100, label='Points', zorder=3) # 添加备注信息 mp.annotate(r'$[\frac{\pi}{2},1]$', xycoords='data', xy=(np.pi / 2, 1), textcoords='offset points', xytext=(30, 30), fontsize=14, arrowprops=dict( arrowstyle='->', connectionstyle='angle3')) mp.annotate(r'$[\frac{\pi}{2},0]$', # 备注的内容 xycoords='data', # 会让你的箭头指向这个点 xy=(np.pi / 2, 0), # 备注的坐标点 textcoords='offset points', # 你传进去的那个字符串会基于你第一步画出来的那个点的基础上x轴上减30,y轴上减30的位置进行打印。 xytext=(-60, -60), # 离原坐标的距离 fontsize=14, # 备注字的大小 arrowprops=dict( arrowstyle='->', # 描绘了箭头的样式 connectionstyle='angle3')) # 就是描绘箭头的样式的,例如箭头的一个弧度之类的 mp.legend(loc='best') mp.show()
-
图形对象(图形窗口)
-
子图
-
刻度定位器
-
刻度网格线
-
半对数坐标
-
散点图
-
填充
-
条形图
-
饼图
-
等高线图
-
热成像图
-
极坐标系
-
三维曲面
-
简单动画
-