Matplotlib绘图的简单使用(1)

Matplotlib是第三方库,可以快速生成高质量的图表,实现数据的可视化。它可以绘制直方图,折线图,柱状图,散点图,三维图等。

(一)环境的安装

你可以使用anaconda navigator 进行搜索安装,也可以通过pip安装,方法非常简单。

(二)Figure对象的创建(figure)

你可以将figure理解为matplotlib中的画布,所有的画图操作都是在figure上进行的。所以在你画图前,你需要先创建figure(画布)。

使用figure(num, figsize,dpi,facecolor, edgecolor, frameon)

参数解释
num图形编号或名称,取值为数字/字符串
figsize图形编号或名称,取值为数字/字符串
dpi绘图对象的分辨率,默认值为80
facecolor背景颜色
edgecolor边框颜色
frameon表示是否显示边框,默认为绘制

下面我们将绘制一个背景颜色为黄色的空白画布

import matplotlib.pyplot as plt
#pyplot是matplotlib的一个子库,通过它可以快速绘制二维图片,所以在绘制二维图像前需先import matplotlib.pyplot as plt

plt.figure(figsize=(5,5),facecolor='y')#这里'y'是yellow的缩写
plt.plot()#在里面啥都设置,所以将绘制空白图形
plt.show()#使用该函数进行显示,

在这里插入图片描述
小伙伴们也可以试着将plt.figure()里的参数清空,看看绘制出的是一个什么样的图像

(三)绘制子图(plt.subplot)

就是在figure(画布)上绘制多个子图

这里需要用到subplot()函数来划分子图
plt.subplot(行数,列数,第几个子图像):切割成行数列数个数量的子图像,多个子图像便分布在行数列数的范围之内。

下面是将将画布划分为2×2的子图区域,并绘制3个子图

plt.subplot(2,2,1):划分为2×2的子图区域,目前第1个子图像指向在第1行第1列的位置上。
plt.subplot(2,2,2):划分为2×2的子图区域,目前第2个子图像指向在第1行第2列的位置上。
plt.subplot(2,2,3):划分为2×2的子图区域,目前第3个子图像指向在第2行第1列的位置上。

import matplotlib.pyplot as plt

plt.figure(figsize=(7,5),facecolor='g')#这里换成原谅色
plt.subplot(2,2,1)
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.show()#使用该函数进行显示,

在这里插入图片描述
PS:如果plt.subplot(2,2,1)里的三个参数不大于10,可以直接写为plt.subplot(221),就是将里面的“,”省略

(四)添加标题(suptitle,title,tight_layout)

标题分为全局标题,和子标题。全局标题是整个图片的标题,子标题是每一个子图的标题。

全局标题suptitle()

参数解释
x标题位置的x坐标 默认为0.5
y标题位置的y坐标 默认为0.98
color标题颜色 默认为黑色
backgroundcolor标题背景颜色 默认为12
fontsize字体大小 , 可选xx-small 、x-small 、small 、medium 、large 、x-large 、xx-large
fontweight字体粗细 ,默认为normal,可选light 、normal、 medium 、semibold 、bold 、heavy、 black
horizontalalignment标题水平对齐方式, 默认为center,可选center、left、right
verticalalignment标题的垂直对齐方式, 默认为center,可选top、center、bottom、baseline
import matplotlib.pyplot as plt

plt.figure(figsize=(7,5),facecolor='gray')#这里换成原谅色
plt.suptitle("heading",fontsize=17,backgroundcolor='green')#总标题参数

plt.subplot(2,2,1)
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.show()#使用该函数进行显示

在这里插入图片描述
参数子标题title()用法与总标题相似

参数解释
loc标题位置 left,right
rotation标题文字旋转角度
color标题颜色 黑色
fontsize标题的字体大小
fontweight字体粗细 normal
fontstyle设置字体类型
horizontalalignment标题水平对齐方式 center
verticalalignment标题的垂直对齐方式 top
fontdict设置参数字典

相比于总标题,子标题还可以将参数设置为字典,然后使用这个字典作为标题的参数,做到快速设置相同参数

import matplotlib.pyplot as plt

plt.figure(figsize=(7,5),facecolor='gray')#这里换成原谅色
plt.suptitle("heading",fontsize=17,backgroundcolor='green')#总标题参数

fontdict={"fontsize":13,"color":"yellow","fontstyle":"italic","rotation":"45"}#这里设置参数字典

plt.subplot(2,2,1)
plt.title('title1',loc='right')
plt.subplot(2,2,2)
plt.title('title2',loc='left',color='red',backgroundcolor='blue')
plt.subplot(2,2,3)
plt.title('title3',fontdict=fontdict)
plt.show()#使用该函数进行显示

在这里插入图片描述

小伙伴们应该可以看见,全局标题与子标题相互重叠,且第三幅图的子标题与第一幅子标题的x轴重叠了(即使不旋转也会重叠,因为标题的下半部分就已经与第一幅的x轴相互重叠了)

这时候我们就需要tight_layout()函数,它可以检查坐标轴标签、刻度标签、和子图标题,自动调整子图,使之填充整个绘图区域,并消除子图之间的重叠。

import matplotlib.pyplot as plt

plt.figure(figsize=(7,5),facecolor='gray')#这里换成原谅色
plt.suptitle("heading",fontsize=17,backgroundcolor='green')#总标题参数

fontdict={"fontsize":13,"color":"yellow","fontstyle":"italic","rotation":"45"}#这里设置参数字典

plt.subplot(2,2,1)
plt.title('title1',loc='right')
plt.subplot(2,2,2)
plt.title('title2',loc='left',color='red',backgroundcolor='blue')
plt.subplot(2,2,3)
plt.title('title3',fontdict=fontdict)

plt.tight_layout()
plt.show()#使用该函数进行显示

在这里插入图片描述
小伙伴们可以看见,子图之间的距离都已经分开了,但是全局标题还是与子图标题相重叠。因为tight_layout()里,我们没有设置任何参数,它就会默认占满整个画布。这时我们只需调整tight_layout()函数里的参数,就可以解决上述问题tight_layout( rect=[left, bottom, right, top])这里面所有的参数都是与画布的比值,最大为1,最小为0

import matplotlib.pyplot as plt

plt.figure(figsize=(7,5),facecolor='gray')#这里换成原谅色
plt.suptitle("heading",fontsize=17,backgroundcolor='green')#总标题参数

fontdict={"fontsize":13,"color":"yellow","fontstyle":"italic","rotation":"45"}#这里设置参数字典

plt.subplot(2,2,1)
plt.title('title1',loc='right')
plt.subplot(2,2,2)
plt.title('title2',loc='left',color='red',backgroundcolor='blue')
plt.subplot(2,2,3)
plt.title('title3',fontdict=fontdict)

plt.tight_layout(rect=[0,0,1,0.93])#这里设置宽度占满,高度从下到上占0.93
plt.show()#使用该函数进行显示

在这里插入图片描述
可以看到问题已经解决了

(五)添加中文字体

添加中文字体,只需在程序中添加plt.rcParams [" font.sans-serif" ] = “目标字体的英文名”

from matplotlib import font_manager

a= sorted([f.name for f in font_manager.fontManager.ttflist])
for i in a:
    print(i)

小伙伴们可以看见,右下角的终端已经打印出所有支持的字体
在这里插入图片描述
可以用上面的程序打印出matplitlib所支持的所有字体,但打印出的都是英文名,所以小伙伴们并不知道其所对应的字体中文名称,所以小伙伴们在自己的C盘中搜索Fonts就可以看见电脑所有字体对应的中文名,右键–属性,就能看见其对应的中文名(但并不代表电脑中的字体就一定能在matplotlib中显示),当然matplotlib也有函数可以让我们自己添加电脑中自带的字体的方法,这里就不多说了,感兴趣的小伙伴可以自行百度

在这里插入图片描述

下面的程序将字体是作为华文新魏

import matplotlib.pyplot as plt


plt.figure(figsize=(7,5),facecolor='gray')#这里换成原谅色

plt.rcParams['font.sans-serif']=['STXINWEI']#设置中文字体为华文新魏,但好像并不是所有的中文字体都支持


plt.suptitle("全局标题",fontsize=17,backgroundcolor='green')#总标题参数

fontdict={"fontsize":13,"color":"yellow","fontstyle":"italic","rotation":"45"}#这里设置参数字典

plt.subplot(2,2,1)
plt.title('标题1',loc='right')
plt.subplot(2,2,2)
plt.title('标题2',loc='left',color='red',backgroundcolor='blue')
plt.subplot(2,2,3)
plt.title('标题3',fontdict=fontdict)

plt.tight_layout(rect=[0,0,1,0.93])#这里设置宽度占满,高度从下到上占0.93
plt.show()#使用该函数进行显示

在这里插入图片描述
小伙伴们可以看见所有的标题都变成了中文

(六)备注

下面推荐一个网站,上面都是matplotlib的画图实例,都有程序。配合着看,相信你也可以画出很多精美的图表,而且都给你分类好了,个人觉的matplotlib画图,这一个网站就够了。

传送门
在这里插入图片描述
这里面的每一幅图片,你点进去,都有代码实现。

(七)结语

如果有什么错误的地方,还请大家批评指正,最后,希望小伙伴们都能有所收获。

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值