day02-数据可视化-坐标-图例-标注-子图-刻度-半对数坐标-散点图-条形图-饼状图-等高线
3、设置坐标范围
mp.xlim(水平坐标最小值,水平坐标最大值)
mp.ylim(垂直坐标最小值,垂直坐标最大值)
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
mp.xlim(x.min() * 1.2,x.max() * 1.2 )
mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
mp.show()
4、设置坐标刻度
mp.xticks([位置序列],[标签序列]),标签序列可以不需要
mp.yticks([位置序列],[标签序列])
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
mp.xlim(x.min() * 1.2,x.max() * 1.2 )
mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
mp.yticks([-1,-0.5,0.5,1])
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
mp.show()
5、LeTex格式标准
r'$\pi$'
r'$\frac{\pi}{2}$'
6、设置坐标轴
坐标轴名称:left/right/bottom/top
ax = mp.gca() #获取当前坐标轴
ax.spines['坐标轴名'].set_position((坐标系,坐标))#设置坐标位置,相当于移动坐标
ax.spines['坐标轴名'].set_color(颜色)#设置坐标颜色
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
mp.xlim(x.min() * 1.2,x.max() * 1.2 )
mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
mp.yticks([-1,-0.5,0.5,1])
ax = mp.gca()
ax.spines['left'].set_position(('data',0)) # 将左轴移动到数据坐标系的0点
ax.spines['bottom'].set_position(('data',0)) #将底轴移动到数据坐标系的0点
ax.spines['right'].set_color('none') #右边坐标颜色设置为透明
ax.spines['top'].set_color('none') #顶边坐标颜色设置为透明
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue') # : 为点线
mp.show()
7、图例
mp.plot(...,label=图例标签,...)
mp.legend([loc=位置])
示例:
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
mp.legend(loc='lower right')
8、标注特殊点
mp.scatter(水平坐标,垂直坐标,s=点大小,marker=点型,
color=颜色,edgecolor=边缘色,facecolor=填充色,
zorder=图层序号,小的先画,大的后画)
marker,默认为园点,'s'为方形,'*'为五角星点
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
xo = np.pi*3/4
yo_cos = np.cos(xo)/2
yo_sin = np.sin(xo)
mp.xlim(x.min() * 1.2,x.max() * 1.2 )
mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
mp.yticks([-1,-0.5,0.5,1])
ax = mp.gca()
ax.spines['left'].set_position(('data',0)) # 将左轴移动到数据坐标系的0点
ax.spines['bottom'].set_position(('data',0)) #将底轴移动到数据坐标系的0点
ax.spines['right'].set_color('none') #右边坐标颜色设置为透明
ax.spines['top'].set_color('none') #顶边坐标颜色设置为透明
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
mp.scatter([xo,xo],[yo_cos,yo_sin],marker='*',s=150,edgecolor='blue',
facecolor='white',zorder=3)
mp.plot([xo,xo],[yo_cos,yo_sin])
mp.legend()
#mp.legend(loc='lower right')
mp.show()
9、在图中显示标注
mp.annotate(
备注文本,
xy=目标坐标,
xycoords=目标坐标系,
xytext=文本坐标,
textcoords=文本坐标系,
fontsize=字体大小,
arrowprops=箭头线属性
)
xycoords:xy 坐标系统
‘data’:沿用所标注对象的坐标方式
‘figure points’:从画布的左下角,按照“点”来计算
‘figure pixels’:从画布的左下角,按照“像素”来计算
‘figure fraction’:从画布的左下角,按照“比例”来计算
‘axes points’:从图表的左下角,按照“点”来计算
‘axes pixels’:从图表的左下角,按照“像素”来计算
‘axes fraction’:从图表的左下角,按照“比例”来计算
‘polar’:极坐标
textcoords:xytext 的坐标体系
包括所有 xycoords 的方式
‘offset points’:从 xy 处,按照“点”来计算
‘offset pixels’:从 xy 处,按照“像素”来计算
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
xo = np.pi*3/4
yo_cos = np.cos(xo)/2
yo_sin = np.sin(xo)
mp.xlim(x.min() * 1.2,x.max() * 1.2 )
mp.ylim(sin_y.min() * 1.2,sin_y.max() * 1.2 )
mp.xticks([-np.pi,-np.pi/2,0,np.pi/2,np.pi*3/4,np.pi],
[r'$-\pi$',r'$-\frac{\pi}{2}$',r'$0$', #r'$0$' 也可直接写 0,但为了统一格式,就按r'$0$'
r'$\frac{\pi}{2}$',r'$\frac{3\pi}{4}$',
r'$\pi$'])# r'$-\pi$ ,标签转义格式 \frac{分子}{分母} 分数格式化
mp.yticks([-1,-0.5,0.5,1])
ax = mp.gca()
ax.spines['left'].set_position(('data',0)) # 将左轴移动到数据坐标系的0点
ax.spines['bottom'].set_position(('data',0)) #将底轴移动到数据坐标系的0点
ax.spines['right'].set_color('none') #右边坐标颜色设置为透明
ax.spines['top'].set_color('none') #顶边坐标颜色设置为透明
mp.plot(x,cos_y,linestyle='--',linewidth= 1 ,color = 'green',label=r'$y=\frac{1}{2}cos(x)$') # -- 为虚线
mp.plot(x,sin_y,linestyle=':', linewidth = 4,color='blue',label=r'$y=sin(x)$') # : 为点线
mp.scatter([xo,xo],[yo_cos,yo_sin],marker='*',s=150,edgecolor='blue',
facecolor='white',zorder=3)
mp.annotate(
r'$\frac{1}{2}cos(\frac{3\pi}{4})=-\frac{\sqrt{2}}{4}$',
xy=(xo,yo_cos),xycoords='data',
xytext=(-90,-40),textcoords='offset points',
fontsize=14,
arrowprops=dict(arrowstyle='->',
connectionstyle='arc3,rad=.2'))
mp.annotate(
r'$\sin(\frac{3\pi}{4})=\frac{\sqrt{2}}{2}$',
xy=(xo,yo_sin),xycoords='data',
xytext=(20,20),textcoords='offset points',
fontsize=14,
arrowprops=dict(arrowstyle='->',
connectionstyle='arc3,rad=.2'))
mp.plot([xo,xo],[yo_cos,yo_sin])
mp.legend()
#mp.legend(loc='lower right')
mp.show()
10、图形对象(图形窗口)
mp.figure(窗口名称,figsize=窗口大小,dpi=分辨率,facecolor=颜色)
如果窗口名称第一次出现,则创建,其标题栏显示该名称
如果已经出现过,则不再创建,而只是将该名称对应的窗口设置为当前窗口
所谓当前窗口,就是接受后续绘图操作的窗口。
mp.title(标题文本,fontsize=字体大小)
mp.xlabel(水平轴标签,fontsize=字体大小)
mp.ylabel(垂直轴标签,fontsize=字体大小)
mp.tick_params(...,labelsize=刻度标签字体大小,...),设置刻度属性
mp.grid(linestyle=网格线型)设置网格线
mp.tight_layout() 紧凑布局
示例一:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
mp.figure('Figure Object 1',figsize=(4,3),dpi = 120,facecolor='lightgray')
mp.title('Figure Object 1',fontsize=16)
mp.xlabel('x',fontsize=12)
mp.ylabel('y',fontsize=12)
mp.tick_params(labelsize=8)
mp.grid(linestyle=':')
mp.tight_layout() #紧凑布局
mp.show()
示例二:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-np.pi,np.pi,1000)
cos_y = np.cos(x) / 2
sin_y = np.sin(x)
#创建窗口"Figure Object 1"
mp.figure('Figure Object 1',figsize=(4,3),dpi = 120,facecolor='lightgray')
mp.title('Figure Object 1',fontsize=16)
mp.xlabel('x',fontsize=12)
mp.ylabel('y',fontsize=12)
mp.tick_params(labelsize=8)
mp.grid(linestyle=':')
mp.tight_layout() #紧凑布局
#创建窗口"Figure Object 2"
mp.figure('Figure Object 2',figsize=(4,3),dpi = 120,facecolor='lightgray')
mp.title('Figure Object 2',fontsize=16)
mp.xlabel('x',fontsize=12)
mp.ylabel('y',fontsize=12)
mp.tick_params(labelsize=8)
mp.grid(linestyle=':')
mp.tight_layout() #紧凑布局
mp.figure('Figure Object 1') #设置当前窗口为"Figure Object 1"
mp.plot(x,cos_y,c='dodgerblue' ,
label=r'$y=\frac{1}{2}cos(x)$') #在当前窗口中画图
mp.legend()
mp.figure('Figure Object 2') #设置当前窗口为"Figure Object 2"
mp.plot(x,sin_y,c='orangered',label=r'$y=sin(x)$') #在当前窗口中画图
mp.legend()
mp.show()
11、子图
1、矩阵式布局(等分布局)
mp.subplot(行数,列数,图号序列序号)
例如:如9等分画面,即3x3矩阵,如图号序列为:
1 2 3
4 5 6
7 8 9
如需调用5号窗口,则为:
mp.subplot(3,3,5) ,表示将画面9等分,并选择5号窗口
等价于:mp.subplot(335)
示例:
import matplotlib.pyplot as mp
mp.figure('Sub1',facecolor='lightgray')
#以下第一个子图
mp.subplot(221) #将画面四等分,将本窗口设置在第一个位置
mp.xticks(()) #将x坐标轴置空,也就是不显示
mp.yticks(()) #将y坐标轴置空,也就是不显示
#ha水平对齐方式。va垂直对齐方式。alpha透明度
mp.text(0.5,0.5,'No.1',ha='center',va='center',size=24,alpha=0.5)
#以下第二个子图
mp.subplot(222) #将画面四等分,将本窗口设置在第二个位置
mp.xticks(()) #将x坐标轴置空,也就是不显示
mp.yticks(()) #将y坐标轴置空,也就是不显示
mp.text(0.5,0.5,'No.2',ha='center',va='center',size=24,alpha=0.5)
#ha水平对齐方式。va垂直对齐方式。alpha透明度
#以下第三个子图
mp.subplot(223) #将画面四等分,将本窗口设置在第二个位置
mp.xticks(()) #将x坐标轴置空,也就是不显示
mp.yticks(()) #将y坐标轴置空,也就是不显示
mp.text(0.5,0.5,'No.3',ha='center',va='center',size=24,alpha=0.5)
#ha水平对齐方式。va垂直对齐方式。alpha透明度
#以下第四个子图
mp.subplot(224) #将画面四等分,将本窗口设置在第二个位置
mp.xticks(()) #将x坐标轴置空,也就是不显示
mp.yticks(()) #将y坐标轴置空,也就是不显示
mp.text(0.5,0.5,'No.4',ha='center',va='center',size=24,alpha=0.5)
#ha水平对齐方式。va垂直对齐方式。alpha透明度
mp.tight_layout() #紧凑布局
mp.show()
2、网格式布局(栅格布局)
导入模块:import matplotlib.gridspec as mg
gs = mg.GridSpec(行数,列数)
mp.subplot(gs[指定所占行,列])
示例:
import matplotlib.pyplot as mp
import matplotlib.gridspec as mg
mp.figure('Grid',facecolor='lightgray')
gs = mg.GridSpec(3,3)
#以下第一个子图
mp.subplot(gs[0,:2])
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,'No.1',ha='center',va='center',size=36,alpha=0.5)
#以下第二个子图
mp.subplot(gs[1:,0])
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,'No.2',ha='center',va='center',size=36,alpha=0.5)
#以下第三个子图
mp.subplot(gs[1,1])
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,'No.3',ha='center',va='center',size=36,alpha=0.5)
#以下第四个子图
mp.subplot(gs[2,1:])
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,'No.4',ha='center',va='center',size=36,alpha=0.5)
#以下第五个子图
mp.subplot(gs[:2,2])
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,'No.5',ha='center',va='center',size=36,alpha=0.5)
mp.tight_layout()
mp.show()
3、自由式布局(画面重叠,画中画)
mp.axes([左下角坐标x(即左边位置),左下角坐标y(即底边位置),宽,高])
示例:
import matplotlib.pyplot as mp
mp.figure('Axes',facecolor='lightgray')
#以下第一个子图
mp.axes([0.03,0.038,0.94,0.924])#位置需要计算好
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,"Axes1",ha='center',va='center',size=24,alpha=0.5)
#以下第二个子图
mp.axes([0.63,0.076,0.31,0.308])#位置需要计算好
mp.xticks(())
mp.yticks(())
mp.text(0.5,0.5,"Axes2",ha='center',va='center',size=24,alpha=0.5)
mp.show()
12、刻度定位器
定位器对象 = mp.xxxxLocator(具体参数取决于不同的定位器),xxxx代表众多定位器中的一种
ax = mp.gca()
ax.xaxis 获得x轴(包括上下轴)
ax.yaxis 获得y轴(包括左右轴)
ax.xaxis.set_major_locator(定位器对象)设置主刻度定位器
ax.xaxis.set_minor_locator(定位器对象)设置次刻度定位器
ax.yaxis.set_major_locator(定位器对象)设置主刻度定位器
ax.yaxis.set_minor_locator(定位器对象)设置次刻度定位器
示例:
import numpy as np
import matplotlib.pyplot as mp
mp.figure('Locator')#创建图形窗口
locators = [
'mp.NullLocator()', #空定位器,无刻度
#nbins=3 最多标注3个点,标注点在[1,3,5,7,9]内选择
'mp.MaxNLocator(nbins=3,steps=[1,3,5,7,9])',#最大值定位器
'mp.FixedLocator(locs=[0,2.5,5,7.5,10])', #定点定位器,按照locs的值标注刻度
'mp.AutoLocator()',#自动定位器,默认缺省的
'mp.IndexLocator(offset=0.5,base=1.5)',#索引(等间距)定位器。标注起点刻度为offset,base为步长
'mp.MultipleLocator(1.5)',#多点定位器,从0开始,按参数指定间隔绘制刻度,缺省为1
'mp.LinearLocator(numticks=6)',#线性定位器,按参数值等分刻度
'mp.LogLocator(base=2,subs=[1.0])'#对数定位器,base为底数,subs为指数,增量绘制刻度
] #将多个定位器放在列表中
n_locators = len(locators)
#遍历刻度定器列表
for i, locator in enumerate(locators):
#为每个刻度定位器创建一个子图
mp.subplot(n_locators,1,i+1)
mp.xlim(0,10)
mp.ylim(-1,1)
mp.yticks(())
ax = mp.gca()#获取当前坐标轴
ax.spines['left'].set_color('none')#隐藏左轴
ax.spines['top'].set_color('none') #隐藏顶轴
ax.spines['right'].set_color('none')#隐藏右轴
ax.spines['bottom'].set_position(('data',0))#将底轴移动到中心位置
#设置水平坐标的主刻度定位器
ax.xaxis.set_major_locator(eval(locator)) #eval,将字符串按python指令格式执行
# 设置水平坐标的次刻度定位器为多点定位器,点间隔为0.1
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1)) #MultipleLocator多点定位器,每隔0.1画一个点,默认为1
#绘制一条水平线,无色透明
mp.plot(np.arange(11),np.zeros(11),c = 'none')
#标记刻度定位器类名
mp.text(5,0.3,locator[3:],ha='center',size=20)
mp.tight_layout()
mp.show()
13、刻度网格线
ax = mp.gca()
ax.grid(which=选择主次轴'major'/'minor',
axis=选择轴向'x'/'y'/'both',
linewidth=线宽,linestyle=线型,color=颜色,
alpha=透明度)
示例:
import numpy as np
import matplotlib.pyplot as mp
x = np.linspace(-5,5,1000)
y = 8 * np.sinc(x)
mp.figure('Grid',facecolor='lightgray')
mp.title('Grid',fontsize=20)
mp.xlabel('x',fontsize=14)
mp.ylabel('y',fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
ax.yaxis.set_major_locator(mp.MultipleLocator())
ax.yaxis.set_minor_locator(mp.MultipleLocator(0.1))
mp.tick_params(labelsize=10)
ax.grid(which='major',axis='both',linewidth=0.75,
linestyle='-',color='limegreen') #linestyle='-' 实线,'--'虚线
ax.grid(which='minor',axis='both',linewidth=0.25,
linestyle='-',color='limegreen')
mp.plot(x,y,c='dodgerblue',label=r'$y=8sinc(x)$')
mp.legend()
mp.show()
14、半对数坐标
mp.semilogy(里面参数同plot一样) ,y半对数坐标
mp.semilogy(里面参数同plot一样) ,y半对数坐标
示例:
import numpy as np
import matplotlib.pyplot as mp
y = np.array([1,10,100,1000,100,10,1])
mp.figure('Normal & Grid',facecolor='lightgray')
#以下第一张子图,普通坐标
mp.subplot(211)
mp.title('Normal',fontsize=20)
mp.ylabel('y',fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
ax.yaxis.set_major_locator(mp.MultipleLocator(250))
ax.yaxis.set_minor_locator(mp.MultipleLocator(50))
mp.tick_params(labelsize=10)
ax.grid(which='major',axis='both',linewidth=0.75,
linestyle='-',color='limegreen') #linestyle='-' 实线,'--'虚线
ax.grid(which='minor',axis='both',linewidth=0.25,
linestyle='-',color='limegreen')
mp.plot(y,'o-',c='dodgerblue',label='plot') #'o-',连点成线
mp.legend()
#以下第二张子图,对数坐标
mp.subplot(212)
mp.title('Log',fontsize=20)
mp.xlabel('x',fontsize=14)
mp.ylabel('y',fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(mp.MultipleLocator())#设置主刻度定位器为多点定位器,按默认1间隔刻度
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))#设置次刻度定位器为0.1间隔的多点定位器
# ax.yaxis.set_major_locator(mp.MultipleLocator(250))
# ax.yaxis.set_minor_locator(mp.MultipleLocator(50))
mp.tick_params(labelsize=10)
ax.grid(which='major',axis='both',linewidth=0.75,
linestyle='-',color='limegreen') #linestyle='-' 实线,'--'虚线
ax.grid(which='minor',axis='both',linewidth=0.25,
linestyle='-',color='limegreen')
mp.semilogy(y,'o-',c='dodgerblue',label='semilogy') #'o-',连点成线
mp.legend()
mp.tight_layout()
mp.show()
15、散点图
mp.scatter()
通过每个点的坐标,颜色,大小,形状,代表不同的特征值
如 身体,体重,性别,年龄段,种族
对应设置:x y 颜色 大小 形状
示例:
import numpy as np
import matplotlib.pyplot as mp
n = 1000 #样本数
#假设每个样本有三个特征,分别为x, y, d
x = np.random.normal(0,1,n) #标准正态分布,标准差为1,数量为n
y = np.random.normal(0,1,n) #标准正态分布,标准差为1,数量为n
d = np.sqrt( x ** 2 + y ** 2)
mp.figure('Scatter',facecolor='lightgray')
mp.title('Scatter',fontsize=20)
mp.xlabel('x',fontsize=14)
mp.ylabel('y',fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
mp.scatter(x, y,c=d,cmap='jet_r',s=60,alpha=0.5) #c 是颜色,cmap是颜色映射,
# 以此表示特征d,'jet_r'是深红到深蓝的渐变颜色表,s是大小,也可作为变量表示一个特征
mp.show()
16、颜色填充
mp.fill_between(
边界曲线上点的水平坐标,
下边界曲线上点的垂直坐标,
上边界曲线上的的垂直坐标,
填充条件,color=颜色, alpha=透明度
)
示例:
import numpy as np
import matplotlib.pyplot as mp
n = 1000 #样本数
x = np.linspace(0,8 * np.pi,n)
sin_y = np.sin(x)
cos_y = np.cos(x/2)/2
mp.figure('fill',facecolor='lightgray')
mp.title('fill',fontsize=20)
mp.xlabel('x',fontsize=14)
mp.ylabel('y',fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
mp.plot(x, sin_y,c='dodgerblue',label=r'$y=sin(x)$')
mp.plot(x, cos_y,c='orangered',label=r'$y=\frac{1}{2}cos(\frac{x}{2})$')
mp.fill_between(x,cos_y,sin_y,cos_y < sin_y,color='dodgerblue',alpha=0.2)
mp.fill_between(x,cos_y,sin_y,cos_y > sin_y,color='orangered',alpha=0.2)
mp.legend()
mp.show()
17、条形图
mp.bar(水平坐标,高度,宽度,底坐标(可缺省0),
color=颜色,label=图例,alpha=透明度)
示例:
import numpy as np
import matplotlib.pyplot as mp
apples = np.array([30,25,22,35,21,29,20,24,33,19,27,18])
oranges = np.array([24,33,19,27,35,20,15,27,20,32,21,24])
mp.figure('bar',facecolor='lightgray')
mp.title('bar',fontsize=20)
mp.xlabel('Month',fontsize=14)
mp.ylabel('Price',fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(axis='y',linestyle=':')
mp.ylim((0,40))
x = np.arange(len(apples))
mp.bar(x+0.3,apples,0.3,color='dodgerblue',label='Apple')
mp.xticks(x+0.1,['Jan','Feb','Mar','Apr','May','Jun',
'Jly','Aug','Sep','Oct','Nov','Dec'])
mp.bar(x,oranges,0.3,color='orangered',label='Orange',alpha=0.8)
mp.legend()
mp.show()
18、饼状图
mp.pie(值,间隙,标签,颜色,格式,
shadow=是否带阴影,startangle=起始角度)
格式:小数,百分号
示例:
import numpy as np
import matplotlib.pyplot as mp
values = [26,17,21,29,11]
#spaces = [0,0,0,0,0]不留空隙
spaces = [0.06,0.01,0.01,0.01,0.01]#间隙为半径的0.01%
labels = ['Python','JS','C++','Java','PHP']
colors = ['dodgerblue','orangered','limegreen','violet','gold']
mp.figure('pie',facecolor='lightgray')
mp.title('pie',fontsize=20)
mp.pie(values,spaces,labels,colors,'%d%%',shadow=True,startangle=90)
mp.axis('equal')#等轴设置
mp.show()
19、等高线图(海拔高度相等的线)
mp.contourf(x,y,z,阶数,cmap=颜色映射)#这个用颜色填充
mp.contour(x,y,z,阶数,linewidths=线宽)#这个纯划线
示例:
import numpy as np
import matplotlib.pyplot as mp
n = 1000 #样本数
x,y = np.meshgrid(np.linspace(-3,3,n),
np.linspace(-3, 3, n)) #meshgrid网格化点阵
z = (1 - x / 2 + x**5 + y **3) * np.exp(
-x**2 - y**2) #exp表示 e为底,指数为-x**2 - y**2
mp.figure('Contour',facecolor='lightgray')
mp.title('Contour',fontsize=20)
mp.xlabel('x',fontsize=14)
mp.ylabel('y',fontsize=14)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
mp.contourf(x,y,z,8,cmap='jet')#jet地图颜色映射
cntr = mp.contour(x,y,z,20,colors='black',linewidth=0.5)#绘制等高线
mp.clabel(cntr,inline_spacing=1,fmt='%.1f',fontsize=10)#为等高线图添加高度标签
mp.show()
来源:CSDN
作者:pinecn
链接:https://blog.csdn.net/pinecn/article/details/89597442