欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matplotlib基本绘图API集锦

程序员文章站 2024-02-14 23:51:52
...

一、基本使用流程

import matplotlib.pyplot as plt  # 导入模块

# 画布设置
plt.figure(figsize=(12,9))       # 设置图像尺寸大小,参数值乘以100表示分辨率
plt.subplot(m,n,j)               # 多个图排列
plt.figure().tight_layout()      # 多个图排列时自动设置间距,消除重叠

# 画图
plt.plot(x, y)

# 图形设置
plt.xlabel( 'height')            # 设置X轴标题
plt.ylabel( 'weight ')           # 设置Y轴标题
plt.title('scatter demo')        # 添加图的标题

# 保存与显示
plt.savefig(savepath)            # 保存图像,图像如果不完整,需要添加参数 bbox_inches = 'tight'
plt.show()                       # 显示图像,执行该语句之后会释放 figure 资源,如果要保存图片必须将 save 放在 show 之前,否则只能保存空白

二、常见设置

1.设置画布尺寸
plt.figure(
    figsize=(30, 5),          # 画布大小,指定画布的宽和高,单位为英寸
    dpi=80                    # 指定绘图对象的分辨率,即每英寸对少个像素,默认为80
)

matplotlib基本绘图API集锦

2.设置坐标轴刻度、标签、标题
plt.xticks(
    x,                        # 刻度,指定在哪些位置有标签
    x_ticks_label,            # 刻度标签,shape 与刻度一致
    rotation                  # 刻度标签旋转角度
)
plt.xlabel('x_axle')

matplotlib基本绘图API集锦

3.设置坐标轴显示范围
plt.xlim([4, 8])            # 两边都设置
plt.xlim(xmin=4)			# 只设置左边
plt.xlim(xmax=4)			# 只设置右边

matplotlib基本绘图API集锦

4.设置坐标轴显示方式
ax = plt.gca()
ax.spines['right'].set_color('none')			# 隐藏右边线
ax.spines['top'].set_color('none')				# 隐藏上边线
ax.spines['left'].set_color('b')				# 左边线颜色为蓝色
ax.spines['bottom'].set_color('y')				# 下边线颜色为黄色

ax.spines['left'].set_position(('data', 6))		# 移动左边线,'data' 表示移动到交叉轴的指定坐标

matplotlib基本绘图API集锦

5.设置网格
plt.grid(
    b=None,						# 是否显示网格线
    axis='both',				# 方向轴
    linestyle='-.',           	# 网格线样式
    linewidth=2,				# 线宽
    alpha=.4,                 	# 透明度
    color='red'               	# 颜色 
)

matplotlib基本绘图API集锦

6.设置图例

图例在一图多线中使用,并且要在划线 plt.plot 中设置 label 参数。

plt.plot(x, y, c='r', label='line1')
plt.plot(x, y**2, c='b', label='line2')

plt.legend(
    prop,					# 图例字体
    loc='upper right'		# 图例位置
)

matplotlib基本绘图API集锦

7.设置显示中文(局部)

一般用来设置中文的属性都是 fontproperties,除了图例用的是 prop,这个在上面说到过!

from matplotlib import font_manager

# 设置字体,这个字体文件必须支持中文
my_font = font_manager.FontProperties(fname='/path/to/font_file.ttc', size=18)

# 坐标轴显示中文
plt.xlabel(
    x_title,                   # 坐标轴标题内容
    fontproperties=my_font     # 字体设置
)

# 图形标题显示中文
plt.title(
    title, 
    fontproperties=my_font
)

matplotlib基本绘图API集锦

8.设置中文显示(全局)
plt.rcParams['font.sans-serif'] = ['FangSong']

'''
常用字体:
    - 黑体 SimHei
    - 微软雅黑 Microsoft YaHei
    - 微软正黑体 Microsoft JhengHei
    - 新宋体 NSimSun
    - 新细明体 PMingLiU
    - 细明体 MingLiU
    - 标楷体 DFKai-SB
    - 仿宋 FangSong
    - 楷体 KaiTi
    - 仿宋_GB2312 FangSong_GB2312
    - 楷体_GB2312 KaiTi_GB2312
'''
9.创建多个子图
fig = plt.figure(num=1, figsize=(10,10))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

matplotlib基本绘图API集锦

10.任意位置添加文字
plt.text(
    x,  							# 横坐标
    y, 								# 纵坐标
    text, 							# 内容
    c,								# 颜色
    size,							# 字体大小
    ha='center', 					# 对齐方式
    fontproperties=my_font			# 字体
)

matplotlib基本绘图API集锦

三、基本图形绘制

1.折线图
plt.plot(
        x,                     # 横坐标
        y,                     # 纵坐标
        color='r',             # 折线颜色
        alpha=0.5,             # 折线透明度
        linestyle='--',        # 折线的样式,-./
        linewidth=3,           # 折线宽度
        marker='o'             # 折点样式,*/+/x/s/v/h/H
)

matplotlib基本绘图API集锦

2.散点图
plt.scatter(
    x, 
    y, 
    c='r', 
    marker='s', 
    alpha=.5, 
    label='test'
)

matplotlib基本绘图API集锦

3.条形图

条形图绘制时会返回所有绘制的矩形框,这些矩形框也是一个个的对象!

# 垂直条形图
rects = ax1.bar(x, y, color='r', width=0.3, alpha=.5)
for rect in rects:
    print(rect.get_x(), rect.get_y())
    print(rect.get_width(), rect.get_height())

# 水平条形图
ax2.barh(x, y, color='r', height=0.3, alpha=.5)				# 这里条形宽度其实是高度 height

# 并列条形图
ax3.bar(x, y, color='r', width=0.3, alpha=.5)
ax3.bar(x+0.3, y-1, color='b', width=0.3, alpha=.5)			# 这里 x 偏移与宽度一致

# 罗列条形图
ax4.bar(x, y, width=0.3, alpha=.5)							# 先画下面的
ax4.bar(x, y-1, bottom=y, color='r', width=0.3, alpha=.5)	# 再画上面的,用 bottom 把它顶起来

matplotlib基本绘图API集锦

4.直方图

直方图带有统计功能,它会统计落在每一个区间内的样本数量,然后绘制矩形,所以输入需要是一个样本集合

plt.hist(
	x,			# 数据样本集合
	bins		# 区间的数量,它会根据这个参数、以及数据的最大最小值自动计算每一个区间的上下界
)

# 区间数量的计算方式:最大样本值减去最小样本值,除以区间宽度,最后取整
bins = int((max(x)-min(x))/region_width)

matplotlib基本绘图API集锦

5.饼状图
size = [59, 20, 21]							# 每一部分占比
clolor = ['r', 'g', 'b']					# 每一部分颜色
explode = [0, 0.1, 0]						# 每一部分凸出比例
label_list = ['梅西', 'C罗', '内马尔']		# 每一部分标签

# 绘制饼状图
patches, l_text, p_text = plt.pie(
    	size, 
        explode=explode, 					# 凸出
        colors=clolor, 						# 颜色
        labels=label_list, 					# 标签
        labeldistance=1.4,					# 各部分标签距离圆心距离,按照半径的倍数计算
    	pctdistance=0.7,					# 圆内各扇形文本距离圆心距离,按照半径的倍数计算
        autopct='%.1f%%', 					# 圆内各扇形文本显示格式,就是半分比
        shadow=True, 						# 圆内各扇形边界阴影
        startangle=90, 						# 第一个扇形的起始角度,从第一象限逆时针开始计算
        )

# 重新绘制扇形颜色
for t in patches:
    t.set_color('pink')
    break

# 绘制标签
for t in l_text:
    t.set_fontproperties(my_font)

# 绘制扇形内文本(百分比标签)
for t in p_text:
    t.set_size(15)

# 绘制图例
plt.legend(prop=my_font)

matplotlib基本绘图API集锦

相关标签: 随手记