Matplotlib基础(part2)--图形对象

学习笔记,这个笔记以例子为主。
编辑器:EditPlus



图形对象(图形窗口)

  • 绘制图形窗口语法
mp.figure(
        '窗口标题栏文本',   #窗口标题栏文本
        figsize = (4, 3), #窗口大小 <元祖>
        dpi = 120,        #像素密度
        facecolor = ''    #图表背景色
        )

案例1(绘制一个窗口)

代码:

import matplotlib.pyplot as mp

mp.figure(
        '窗口标题栏文本',
        figsize = (4, 3),
        dpi = 120,
        facecolor = 'r')

mp.show()

图像:

备注:mp.figure方法不仅可以构建一个新窗口,如果已经构建过title='A’的窗口,又使用figure方法构建了title=‘A’ 的窗口的话,mp将不会创建新的窗口,而是把title='A’的窗口置为当前操作窗口。

案例2(绘制两个窗口)

代码:

import matplotlib.pyplot as mp

mp.figure('Figure A', facecolor = 'gray')
mp.figure('Figure B', facecolor = 'lightgray')

mp.show()

图像:

设置当前窗口的参数

  • 语法
# 设置图表标题 显示在图表上方
mp.title(title, fontsize=12)
# 设置水平轴的文本
mp.xlabel(x_label_str, fontsize=12)
# 设置垂直轴的文本
mp.ylabel(y_label_str, fontsize=12)
# 设置刻度参数   labelsize设置刻度字体大小
mp.tick_params(labelsize= 8)
# 设置图表网格线  
mp.grid(linestyle='')
#linestyle设置网格线的样式
	#	-  or solid 粗线
	#   -- or dashed 虚线
	#   -. or dashdot 点虚线
	#   :  or dotted 点线

# 设置紧凑布局,把图表相关参数都显示在窗口中
mp.tight_layout() 
  • 举个例子

代码:

import matplotlib.pyplot as mp


mp.figure('Figure B', facecolor = 'lightgray')
# 设置图表标题 显示在图表上方
mp.title('Figure A', fontsize=15)
# 设置水平轴的文本
mp.xlabel('X', fontsize=12)
# 设置垂直轴的文本
mp.ylabel('Y', fontsize=12)
# 设置刻度参数   labelsize设置刻度字体大小
mp.tick_params(labelsize= 10)
# 设置图表网格线  
mp.grid(linestyle='--')
# 设置紧凑布局,把图表相关参数都显示在窗口中
mp.tight_layout() 

mp.show()

图像:

子图

矩阵式布局(不支持单元格合并)

  • 语法
# 拆分矩阵
mp.subplot(rows, cols, num)
#rows:	行数 ,cols:	列数,num:子图编号
#比如:
mp.subplot(3, 3, 5)
#操作3*3的矩阵中编号为5的子图

图示:

  • 例子(绘制9宫格)

代码:

import matplotlib.pyplot as mp

mp.figure('Subplot', facecolor='lightgray')

for i in range(1, 10):
    mp.subplot(3, 3, i)
    mp.text(0.5, 0.5, i, size=36, ha='center',
            va='center')
    mp.xticks([]) #mp.xticks()为设置x轴刻度
    mp.yticks([]) #mp.yticks()为设置y轴刻度
    mp.tight_layout()

mp.show()

图像:

网格式布局(支持单元格合并)

  • 语法
import matplotlib.gridspec as mg

# 调用GridSpec方法拆分网格式布局
gs = mg.GridSpec(rows, cols)	
# rows:	行数
# cols:	列数

#比如:
gs = mg.GridSpec(3, 3)	
#拆分成3行3列

# 合并0行与0、1列为一个子图表
mp.subplot(gs[0, :2])
  • 例子

代码:

import matplotlib.pyplot as mp
import matplotlib.gridspec as mg

mp.figure('GridLayout', facecolor='lightgray')
#拆分成3行3列
gridsubs = mp.GridSpec(3, 3)
# 合并0行、0和1列为一个子图
mp.subplot(gridsubs[0, :2])
mp.text(0.5, 0.5, 1, ha='center', va='center', size=36)
mp.tight_layout()
mp.xticks([])
mp.yticks([])

mp.show()

图像:

自由式布局

  • 语法
import matplotlib.gridspec as mg

mp.figure('Flow Layout', facecolor='lightgray')
# 设置图标的位置,给出左下角点坐标与宽高即可
mp.axes([left_bottom_x, left_bottom_y, width, height])
# left_bottom_x: 坐下角点x坐标
# left_bottom_x: 坐下角点y坐标
# width:		 宽度
# height:		 高度

#比如:
mp.axes([0.03, 0.03, 0.94, 0.94])
  • 例子

代码:

import matplotlib.pyplot as mp
import matplotlib.gridspec as mg

mp.figure('FlowLayout', facecolor='lightgray')

mp.axes([0.08, 0.08, 0.6, 0.5])
mp.xticks([])
mp.yticks([])
mp.axes([0.08, 0.6, 0.6, 0.3])
mp.xticks([])
mp.yticks([])

mp.show()

图像:

刻度定位器

  • 语法
# 获取当前坐标轴
ax = mp.gca()
# 设置水平坐标轴的主刻度定位器
ax.xaxis.set_major_locator(mp.NullLocator())
# 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1
ax.xaxis.set_minor_locator(mp.MultipleLocator(0.1))

常用刻度器如下:

# 空定位器:不绘制刻度
mp.NullLocator()
# 最大值定位器:最多绘制nbins+1个刻度
mp.MaxNLocator(nbins=3)
# 定点定位器:根据locs参数中的位置绘制刻度
mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10])
# 自动定位器:由系统自动选择刻度的绘制位置
mp.AutoLocator()
# 索引定位器:由offset确定起始刻度,由base确定相邻刻度的间隔
mp.IndexLocator(offset=0.5, base=1.5)
# 多点定位器:从0开始,按照参数指定的间隔(缺省1)绘制刻度
mp.MultipleLocator()
# 线性定位器:等分numticks-1份,绘制numticks个刻度
mp.LinearLocator(numticks=21)
# 对数定位器:以base为底,绘制刻度
mp.LogLocator(base=2)
  • 例子(绘制一个数轴)

代码:

import matplotlib.pyplot as mp
import matplotlib.gridspec as mg

mp.figure('Locators', facecolor='lightgray')
# 获取当前坐标轴
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))

mp.xlim(0, 10)
mp.yticks([])
# 设置水平坐标轴的主刻度定位器
ma_loc = mp.MultipleLocator(1)
ax.xaxis.set_major_locator(ma_loc)
# 设置水平坐标轴的次刻度定位器为多点定位器,间隔0.1
mi_loc = mp.MultipleLocator(0.1)
ax.xaxis.set_minor_locator(mi_loc)
# 标记所用刻度定位器类名 

mp.show()

图像:

刻度网格线

  • 语法
ax = mp.gca()
#绘制刻度网格线
ax.grid(
    which='',		# 'major'/'minor' <-> '主刻度'/'次刻度' 
    axis='',		# 'x'/'y'/'both' <-> 绘制x或y轴
    linewidth=1, 	# 线宽
    linestyle='', 	# 线型
    color='',		# 颜色
	alpha=0.5		# 透明度
)
  • 举个例子

绘制曲线y = [1, 10, 100, 1000, 100, 10, 1],然后设置y轴刻度网格线。

代码:

import numpy as np
import matplotlib.pyplot as mp

y = [1, 10, 100, 1000, 100, 10, 1]
mp.figure('Grid Line', facecolor='lightgray')
# 设置刻度定位器
ax = mp.gca()
y_ma_loc = mp.MultipleLocator(250)
ax.yaxis.set_major_locator(y_ma_loc)
y_mi_loc = mp.MultipleLocator(50)
ax.yaxis.set_minor_locator(y_mi_loc)

# 设置刻度网格线
ax.grid(which='major', axis='y',
        linewidth=0.75, color='orangered',
        linestyle='-')
ax.grid(which='minor', axis='y',
        linewidth=0.25, color='orangered',
        linestyle='-')

mp.plot(y, 'o-', color='dodgerblue')
mp.show()

图像:

半对数坐标

  • 举个例子

y轴将以指数方式递增。基于半对数坐标绘制第2个子图,表示曲线:y = [1, 10, 100, 1000, 100 10, 1]

代码:

import numpy as np
import matplotlib.pyplot as mp

y = [1, 10, 100, 1000, 100, 10, 1]
mp.figure('Grid Line', facecolor='lightgray')

mp.subplot(211)
# 设置刻度定位器
ax = mp.gca()
y_ma_loc = mp.MultipleLocator(250)
ax.yaxis.set_major_locator(y_ma_loc)
y_mi_loc = mp.MultipleLocator(50)
ax.yaxis.set_minor_locator(y_mi_loc)

# 设置刻度网格线
ax.grid(which='major', axis='y',
        linewidth=0.75, color='orangered',
        linestyle='-')
ax.grid(which='minor', axis='y',
        linewidth=0.25, color='orangered',
        linestyle='-')

mp.plot(y, 'o-', color='dodgerblue')

mp.subplot(212)
# 设置刻度定位器
ax = mp.gca()
y_ma_loc = mp.MultipleLocator(250)
ax.yaxis.set_major_locator(y_ma_loc)
y_mi_loc = mp.MultipleLocator(50)
ax.yaxis.set_minor_locator(y_mi_loc)

# 设置刻度网格线
ax.grid(which='major', axis='both',
        linewidth=0.75, color='orangered',
        linestyle='-')
ax.grid(which='minor', axis='both',
        linewidth=0.25, color='orangered',
        linestyle='-')

# 半对数坐标显示图形
mp.semilogy(y, 'o-', color='dodgerblue')

mp.show()

图像:

发布了141 篇原创文章 · 获赞 24 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/105172985
今日推荐