使⽤pythonmatplotlib 画⼆维图,设置坐标轴刻度和colorbar 刻度ticks ⽂章⽬录
导⼊包
数据准备
画图
到此,得下图
令xy 坐标刻度⽤科学计数法表⽰使⽤matplotlib.axes.Axes.ticklabel_format 来控制坐标刻度格式。import  numpy as  np import  matplotlib .pyplot as  plt import  matplotlib .colors as  mcolors from  matplotlib .ticker import  (MultipleLocator , FormatStrFormatter , AutoMinorLocator )
1
2
3
4xi = np .linspace (-50000, 50000, 500)#从-50000到50000等间隔采样500个点构建1D 数组yi = np .lins
pace (-50000, 50000, 500)#从-50000到50000等间隔采样500个点构建1D 数组#从1D 坐标得到2D ⽹格坐标X ,Y =np .meshgrid (xi ,yi )#合成数据Z =np .sin (1e -8*X *Y )*np .exp (-1e -8*X **2-1e -8*Y **2)#⾃定义⾊标colors =["magenta","blueviolet","royalblue","aqua","springgreen","greenyellow","yellow","orangered","red","white"]clrmap =mcolors .LinearSegmentedColormap .from_list ("mycmap",colors )
1
2
3
4
5
6
7
8
9
10
11
12#开始绘制#图⽚宽度6, ⾼4,单位inch fig =plt .figure (figsize =(6,4))plt .pcolor (X ,Y ,Z ,cmap =clrmap )#令xy 的尺度相同plt .gca ().set_aspect ('equal', 'box')#设置xy 轴标签plt .gca ().set_xlabel ("x (cm)",fontsize =12.5)plt .gca ().set_ylabel ("y (cm)",fontsize =12.5)
1linspace numpy
2
3
4
5
6
7
8
9
10
11
⽤法:ticklabel_format(style='scientific',scilimits=(m,n),useMathText=False)
scilimits=(m,n)表⽰如果刻度范围超出到,那么就是⽤科学计数法。如果将scilimits参数设为(0,0),那么对于所有的刻度范围都⾃动显⽰成科学计数的形式。
令useMathText=False的时候,会显⽰为的形式,useMathText=True的时候,会显⽰成的形式。
官⽅⽂档:
在前⾯的画图代码继续敲下⾯这⾏:
得到下图控制刻度间隔
⽅法:set_major_locator(locator)设置主刻度,set_minor_locator(locator)设置副刻度。locater使⽤MultipleLocator(n)可以令间隔为n,如果⽤AutoMinorLocator()则⾃动设置间隔。
官⽅⽰例:
继续上述的实例
运⾏得到
10m 10n 1eX 10X #xy 坐标刻度使⽤科学计数法plt .gca ().ticklabel_format (style ='scientific',scilimits =(-2,2),useMathText =True )
1
2#设置主刻度 major ticks 和副刻度minor ticks #使⽤MultipleLocator(10000)设置主刻度的间隔为10000plt .gca ().xaxis .set_major_locator (MultipleLocator (10000))plt .gca ().yaxis .set_major_locator (MultipleLocator (10000))#⾃动设置副刻度的间隔plt .gca ().xaxis .set_minor_locator (AutoMinorLocator ())plt .gca ().yaxis .set_minor_locator (AutoMinorLocator ())
1
2
3
4
5
6
7
8
刻度字体⼤⼩
得下图添加colorbar 并设置刻度
给图⽚添加颜⾊条,并且设置颜⾊条的刻度完整代码
完整代码如下:#设置刻度的字体⼤⼩,which='both'表⽰major 和minor ticks ⼀起设置plt .gca ().tick_params (which ='both',labelsize =12.5)#下⾯两句设置x 轴和y 轴科学计数法部分(即x10^(4))的字体plt .gca ().xaxis .get_offset_text ().set_fontsize (12.5)plt .gca ().yaxis .get_offset_text ().set_fontsize (12.5)
1
2
3
4
5#添加颜⾊条clb =plt .colorbar ()#设置颜⾊条的刻度clb .ax .yaxis .set_major_locator (MultipleLocator (0.025))clb .ax .yaxis .set_minor_locator (MultipleLocator (0.005))clb .ax .tick_params (labelsize =12.5)#设置颜⾊条的title clb .ax .set_title ('unit',fontsize =12.5)1
2
3
4
5
6
7
8
# -*- coding: utf-8 -*-import  numpy as  np import  matplotlib .pyplot as  plt import  matplotlib .colors as  mcolors from  matplotlib .ticker import  (MultipleLocator , FormatStrFormatter , AutoMinorLocator )#产⽣数据#从-50000到50000等间隔采样500个点xi = np .linspace (-50000, 50000, 500)yi = np .linspace (-50000, 50000, 500)#从⼀维数组得到⼆维数组X ,Y =np .meshgrid (xi ,yi )Z =np .sin (1e -8*X *Y )*np .exp (-1e -8*X **2-1e -8*Y **2)#⾃定义⾊标colors =["magenta","blueviolet","royalblue","aqua","springgreen","greenyellow","yellow","orangered","red","white"]clrmap =mcolors .LinearSegmentedColormap .from_list ("mycmap",colors )#开始绘制#图⽚宽度6, ⾼4,单位inch fig =plt .figure (figsize =(6,4))plt .pcolor (X ,Y ,Z ,cmap =clrmap )#令xy 的尺度相同plt .gca ().set_
aspect ('equal', 'box')#设置xy 轴标签plt .gca ().set_xlabel ("x (cm)",fontsize =12.5)plt .gca ().set_ylabel ("y (cm)",fontsize =12.5)#xy 坐标刻度使⽤科学计数法plt .gca ().ticklabel_format (style ='scientific',scilimits =(-2,2),useMathText =True )#设置主刻度 major ticks 和副刻度minor ticks #使⽤MultipleLocator(10000)设置主刻度的间隔为10000plt .gca ().xaxis .set_major_locator (MultipleLocator (10000))plt .gca ().yaxis .set_major_locator (MultipleLocator (10000))#⾃动设置副刻度的间隔plt .gca ().xaxis .set_minor_locator (AutoMinorLocator ())plt .gca ().yaxis .set_minor_locator (AutoMinorLocator ())#设置刻度的字体⼤⼩,axis='both'表⽰major 和minor ticks ⼀起设置plt .gca ().tick_params (which ='both',labelsize =12.5)#下⾯两句设置x 轴和y 轴科学计数法部分(即x10^(4))的字体plt .gca ().xaxis .get_offset_text ().set_fontsize (12.5)plt .gca ().yaxis .get_offset_text ().set_fontsize (12.5)#添加颜⾊条clb =plt .colorbar ()#设置颜⾊条的刻度clb .ax .yaxis .set_major_locator (MultipleLocator (0.025))clb .ax .yaxis .set_minor_locator (MultipleLocator (0.005))clb .ax .tick_params (labelsize =12.5)#设置颜⾊条的title clb .ax .set_title ('unit',fontsize =12.5)plt .show ()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859