添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
虚心的牛肉面  ·  SqlServer ...·  9 月前    · 
首发于 学术之友
python可视化学习—坐标轴|刻度值|刻度||标题设置

python可视化学习—坐标轴|刻度值|刻度||标题设置

学习公众号中的matplotlib可视化(作为个人学习使用):

从代码中一步一步学习,得到最终的效果图:

下面一步步的实现

1、设置图的各种属性

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(dpi=150)

先导入matplotlib.pyplot使用。

plt(matplotlib.pyplot)使用rc配置文件来自定义图形的各种默认属性,称之为“rc配置”或“rc参数”。

通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。rc参数存储在字典变量中,通过字典的方式进行访问。

代码中设置:'Microsoft YaHei'字体,字符正常显示,建立一个figur对象,并设置dpi为150。

2、设置figure的标题

#整张图figure的标题自定义设置
plt.suptitle('整张图figure的标题:suptitle',#标题名称
             x=0.5,#x轴方向位置
             y=0.98,#y轴方向位置
             size=15, #大小
             ha='center', #水平位置,相对于x,y,可选参数:{'center', 'left', right'}, default: 'center'
             va='top',#垂直位置,相对于x,y,可选参数:{'top', 'center', 'bottom', 'baseline'}, default: 'top'
             weight='bold',#字体粗细,以下参数可选
            # '''weight{a numeric value in range 0-1000, 'ultralight', 'light', 
             #'normal', 'regular', 'book', 'medium', 'roman', 'semibold', 'demibold', 
             #'demi', 'bold', 'heavy', 'extra bold', 'black'}'''
             #其它可继承自matplotlib.text的属性
             #标题也是一种text,故可使用text的属性,所以这里只是展现了冰山一角
             rotation=1,##标题旋转,传入旋转度数,也可以传入vertical', 'horizontal'
            )

使用suptitle给整个figure设置一个总标题

其中一些参数的说明如下:

其中x,y在要在figure中显示应设置范围在(0~1)之间。到这里,代码得到的图为:

3、绘制一个子图并设置属性

plt.subplot(1,1,1)#绘制一个子图
#设置文本属性字典
font_self = {'family':'Microsoft YaHei',#设置字体
             'fontsize': 10,#标题大小
             'fontweight' : 'bold',#标题粗细,默认plt.rcParams['axes.titleweight']
             'color' : (.228,.21,.28),
             #'verticalalignment': 'baseline',
            # 'horizontalalignment': 'right'
#每个子图标题自定义设置
plt.title('每个子图axes的标题:title', 
          fontdict=font_self,
          loc='left',#{'center', 'left', 'right'} 
          #下面两个参数可以在前面字典中设置,也可以在这设置;存在时,loc指title在整个subfigure的位置,例如上面的left指与subfigure的最左边对齐,而不是与axes最左边对齐




    

          #ha='center',#会影响loc的使用,可选参数:{'center', 'left', right'}, default: 'center'
          #va='center'#会影响loc的使用,可选参数:{'top', 'center', 'bottom', 'baseline'}, default: 'top'
          pad=7,#子图标题与上坐标轴的距离,默认为6.0
          #其它可继承自matplotlib.text的属性
          rotation=360,#标题旋转,传入旋转度数,也可以传入vertical', 'horizontal'    

使用subplot得到一个子图,使用title设置子标题。到这里,代码得到的图为:

4、设置坐标轴的开启与关闭,属性操作

#坐标轴的开启与关闭操作
plt.gca().spines['top'].set_visible(False)#关闭上坐标轴
plt.gca().spines['bottom'].set_visible(True)#开启x轴坐标轴
plt.gca().spines['left'].set_visible(True)#开启y轴坐标轴
plt.gca().spines['right'].set_visible(False)#关闭右轴
##plt.gca()具有大量属性,也可以对刻度值、刻度、刻度值范围等操作,可自行实验,这里只提到了冰山一角
plt.gca().spines['bottom'].set_color('black')#x轴(spines脊柱)颜色设置
plt.gca().spines['bottom'].set_linewidth(10)#x轴的粗细,下图大黑玩意儿就是这里的杰作
plt.gca().spines['bottom'].set_linestyle('--')#x轴的线性
#同样这里只提到了轴spines属性的冰山一角,也可自行实验
#绘制网格线
plt.grid()

当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示Get Current Figure和Get Current Axes。使用spines对坐标轴(上下左右:'top','bottom','left','right')进行操作。使用grid得到网络线。到这里,代码得到的图为:

5、对坐标轴刻度操作

#坐标轴刻度(tick)与刻度值(tick label)操作
plt.tick_params(axis='x',#对那个方向(x方向:上下轴;y方向:左右轴)的坐标轴上的tick操作,可选参数{'x', 'y', 'both'}
                which='both',#对主刻度还是次要刻度操作,可选参数为{'major', 'minor', 'both'}
                colors='r',#刻度颜色
                #以下四个参数控制上下左右四个轴的刻度的关闭和开启
                top='on',#上轴开启了刻度值和轴之间的线
                bottom='on',#x轴关闭了刻度值和轴之间的线
                left='on',
                right='on',
                direction='out',#tick的方向,可选参数{'in', 'out', 'inout'}                
                length=10,#tick长度
                width=2,#tick的宽度
                pad=10,#tick与刻度值之间的距离
                labelsize=10,#刻度值大小
                labelcolor='#008856',#刻度值的颜色
                zorder=0,
                #以下四个参数控制上下左右四个轴的刻度值的关闭和开启
                labeltop='on',#上轴的刻度值也打开了此时
                labelbottom='on',                
                labelleft='on',
                labelright='off',
                labelrotation=45,#刻度值与坐标轴旋转一定角度
                grid_color='pink',#网格线的颜色,网格线与轴刻度值对应,前提是plt.grid()开启了
                grid_alpha=1,#网格线透明度
                grid_linewidth=10,#网格线宽度
                grid_linestyle='-',#网格线线型,{'-', '--', '-.', ':', '',matplotlib.lines.Line2D中的都可以用                             
#plt.xticks([])#x轴刻度值trick的关闭
plt.xticks(np.arange(0, 2.2, step=0.2),list('abcdefghigk'),rotation=45)
#自定义刻度标签值,刻度显示为您想要的一切(日期,星期等等)
#设置刻度范围
plt.xlim(0.2,2.2)#x坐标轴刻度值范围
plt.ylim(0,2)#y坐标轴刻度值范围
#plt.gca().set((xlim=[0, 2], ylim=[0, 2])#x轴y轴坐标轴范围操作

使用tick_params对坐标轴上的刻度和标签进行操作,其中axis='x'表示只对x轴上属性进行操作。使用xticks对x轴的刻度进行操作,使用xlim和ylim设定轴的范围。到这里,代码得到的图为:

5、设置刻度值之间步长(间隔)和设置标签

#设置刻度值之间步长(间隔)
from matplotlib.pyplot import MultipleLocator
plt.gca().xaxis.set_major_locator(MultipleLocator(0.2))
plt.gca().xaxis.set_minor_locator(MultipleLocator(0.1))
#plt.minorticks_off()#是否每个刻度都要显示出来
plt.xlabel('X轴标题',
           labelpad=22,#x轴标题xlabel与坐标轴之间距离
           fontdict=font_self,#设置xlabel的字体、大小、颜色、粗细
           #类似于上面,可继承自matplotlib.text的属性
           rotation=90        
          )

设置主刻度和次刻度分别用set_major_locator和set_minor_locator。MultipleLocator(0.2)是将主刻度标签设置为0.2的倍数。用xlabel设置x轴的标题。到这里,代码得到的图为:

完整代码为:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] =['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(dpi=150)
#整张图figure的标题自定义设置
plt.suptitle('整张图figure的标题:suptitle',#标题名称
             x=0.5,#x轴方向位置
             y=0.98,#y轴方向位置
             size=15, #大小
             ha='center', #水平位置,相对于x,y,可选参数:{'center', 'left', right'}, default: 'center'
             va='top',#垂直位置,相对于x,y,可选参数:{'top', 'center', 'bottom', 'baseline'}, default: 'top'
             weight='bold',#字体粗细,以下参数可选
            # '''weight{a numeric value in range 0-1000, 'ultralight', 'light', 
             #'normal', 'regular', 'book', 'medium', 'roman', 'semibold', 'demibold', 
             #'demi', 'bold', 'heavy', 'extra bold', 'black'}'''
             #其它可继承自matplotlib.text的属性
             #标题也是一种text,故可使用text的属性,所以这里只是展现了冰山一角
             rotation=1,##标题旋转,传入旋转度数,也可以传入vertical', 'horizontal'
plt.subplot(1,1,1)#绘制一个子图
#设置文本属性字典
font_self = {'family':'Microsoft YaHei',#设置字体
             'fontsize': 10,#标题大小
             'fontweight' : 'bold',#标题粗细,默认plt.rcParams['axes.titleweight']
             'color' : (.228,.21,.28),
             #'verticalalignment': 'baseline',
            # 'horizontalalignment': 'right'
#每个子图标题自定义设置
plt.title('每个子图axes的标题:title', 
          fontdict=font_self,
          loc='left',#{'center', 'left', 'right'} 
          #下面两个参数可以在前面字典中设置,也可以在这设置;存在时,loc指title在整个subfigure的位置,例如上面的left指与subfigure的最左边对齐,而不是与axes最左边对齐
          #ha='center',#会影响loc的使用,可选参数:{'center', 'left', right'}, default: 'center'
          #va='center'#会影响loc的使用,可选参数:{'top', 'center', 'bottom', 'baseline'}, default: 'top'
          pad=7,#子图标题与上坐标轴的距离,默认为6.0
          #其它可继承自matplotlib.text的属性
          rotation=360,#标题旋转,传入旋转度数,也可以传入vertical', 'horizontal'
#坐标轴的开启与关闭操作
plt.gca().spines['top'].set_visible(False)#关闭上坐标轴
plt.gca().spines['bottom'].set_visible(True)#开启x轴坐标轴
plt.gca().spines['left'].set_visible(True)#开启y轴坐标轴
plt.gca().spines['right'].set_visible(False)#关闭右轴
##plt.gca()具有大量属性,也可以对刻度值、刻度、刻度值范围等操作,可自行实验,这里只提到了冰山一角
plt.gca().spines['bottom'].set_color('black')#x轴(spines脊柱)颜色设置
plt.gca().spines['bottom'].set_linewidth(10)#x轴的粗细,下图大黑玩意儿就是这里的杰作
plt.gca().spines['bottom'].set_linestyle('--')#x轴的线性
#同样这里只提到了轴spines属性的冰山一角,也可自行实验
#绘制网格线
plt.grid()
#坐标轴刻度(tick)与刻度值(tick label)操作
plt.tick_params(axis='x',#对那个方向(x方向:上下轴;y方向:左右轴)的坐标轴上的tick操作,可选参数{'x', 'y', 'both'}
                which='both',#对主刻度还是次要刻度操作,可选参数为{'major', 'minor', 'both'}
                colors='r',#刻度颜色
                #以下四个参数控制上下左右四个轴的刻度的关闭和开启
                top='on',#上轴开启了刻度值和轴之间的线
                bottom='on',#x轴关闭了刻度值和轴之间的线
                left='on',
                right='on',
                direction='out',#tick的方向,可选参数{'in', 'out', 'inout'}                
                length=10,#tick长度
                width=2,#tick的宽度
                pad=10,#tick与刻度值之间的距离
                labelsize=10,#刻度值大小
                labelcolor='#008856',#刻度值的颜色
                zorder=0,
                #以下四个参数控制上下左右四个轴的刻度值的关闭和开启
                labeltop='on',#上轴的刻度值也打开了此时
                labelbottom='on',                
                labelleft='on',
                labelright='off',
                labelrotation=45,#刻度值与坐标轴旋转一定角度
                grid_color='pink',#网格线的颜色,网格线与轴刻度值对应,前提是plt.grid()开启了
                grid_alpha=1,#网格线透明度
                grid_linewidth=10,#网格线宽度
                grid_linestyle='-',#网格线线型,{'-', '--', '-.', ':', '',matplotlib.lines.Line2D中的都可以用                             
#plt.xticks([])#x轴刻度值trick的关闭
plt.xticks(np.arange(0, 2.2, step=0.2),list('abcdefghigk'),rotation=45)
#自定义刻度标签值,刻度显示为您想要的一切(日期,星期等等)
#设置刻度范围
plt.xlim(0.2,2.2)#x坐标轴刻度值范围
plt.ylim(0,2)#y坐标轴刻度值范围
#plt.gca().set((xlim=[0, 2], ylim=[0, 2])#x轴y轴坐标轴范围操作
#设置刻度值之间步长(间隔)
from matplotlib.pyplot import MultipleLocator
plt.gca().xaxis.set_major_locator(MultipleLocator(0.2))
plt.gca().xaxis.set_minor_locator(MultipleLocator(0.1))
#plt.minorticks_off()#是否每个刻度都要显示出来
plt.xlabel('X轴标题',
           labelpad=22,#x轴标题xlabel与坐标轴之间距离
           fontdict=font_self,#设置xlabel的字体、大小、颜色、粗细