【python】matplotlib总结

【python】matplotlib总结,第1张

目录
  • 快速入门
  • 各种图形
    • 曲线图
    • 散点图
    • 直方图
    • 饼图
  • 风格和样式

快速入门

基本环境配置:

import numpy as np
from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置字体以便正确显示汉字
plt.rcParams['axes.unicode_minus'] = False # 正确显示连字符

概述:画图首先要创建画布,然后在上面画一幅或者多幅图,每一幅图称为子图。
添加子图add_subplot函数,传入子图网格的行数、列数,以及当前子图的序号(序号从1开始,行优先)。如,总共两行两列四个子图,当前添加的子图位于第2行第二列那就是add_subplot(2,2,4)或者add_subplot(224)

坐标轴和刻度axis是坐标轴,tick是刻度,相互配合可以设置坐标轴的阈值范围、刻度显示、刻度的字符以及刻度字符的格式等。另外,Matplotlib很好的支持了LaTex的语法,我们在坐标轴的名称、画布标题、子图标题、图例等元素中都可以使用LaTex的语法加入数学公式。

图例:子图的legend函数用于生成图例,而绘制曲线的时候添加label参数与之相互配合

显示与保存:显示使用show函数,但是也可以全局使用%matplotlib,就不需要show函数了,另外在jupyter notebook中,使用%matplotlib inline可以实现图片的内嵌!另一方面,保存使用的是savefig函数,设定保存文件名和分辨率即可。

风格:matplotlib其实有两种风格,一种是我们之前一直使用的面向对象的风格,另一种是类MATLAB的风格,这种风格中没有画布和子图的概念,或者说是默认游客一张画布,并且画布上已经有了一个子图,只需要直接调用pyplot绘制即可。
比较:前者更精致,后者更便利

各种图形 曲线图

核心是plot函数,将顺序相连的点以直线连接,参数主要包括x,y也就是长度相同的一维数组表示离散点的x,y坐标;color简写是c表示颜色,linestyle简写是ls表示连线的形状,linewidth简写是lw表示连线的宽度,label表示图例中显示的曲线名称。

散点图

核心是scatter函数,描述离散数据点在直角坐标系平面上的分布图,参数主要包括x,y也就是长度相同的一维数组表示离散点的x,y坐标;s表示离散点的大小;c表示颜色;alpha表示透明度;edgecolor表示边缘颜色。

直方图

核心是hist函数,用于表示数值数据分布,先将数值范围分割成等长的间隔 ,然后计算每个间隔中有多少数值,主要参数有:输入数据x,是一个单独的数组或者一组不需要相同长度的数组;bins表示分段方式。整数就是分为几段,数组就是分割点;color表示直方图的颜色;orientation表示直方图的方向;stacked表示是否允许堆叠;alpha表示透明度;

饼图

核心是pie函数,用于表示每个数值相对于全部数值之和的大小,核心参数有:输入数据xexplode表示各个部分偏离中心点的距离,labels表示各个部分的标签,color表示各个部分的颜色,autoptc表示数值的规则,shadow表示饼图是否有阴影。

风格和样式

画布:主要参数看看就好了,主要函数:add_subplot添加多个子图,add_axes添加单个子图,但是需要指定位置,clear清空当前画布中的内容,show展示画布内容,savefig保存画布,suptitle设置画布标题,text任意位置显示文字。

子图布局:一般就是add_subplot,复杂的布局可以使用gridspec这个函数

颜色:1、RGB或者RGBA的元组表示zhiyu,值域是[0,1];2、十六进制表示;3、[0,1]的浮点数字符串表示灰度;4、颜色缩写字符串,‘b’ ‘g’ ‘e’ 'c’绿色 ‘y’ 'k’黑色 ‘w’
线和点的样式:linestyle或ls设置线的样式,marker设置点的样式

坐标轴
set_xlim(left,right)和set_ylim(bottom,top)设置x轴与y轴的范围,参数就是最大最小值。
invert_xaxis()和invert_yaxis()用于反转x轴和y轴
twinxtwiny用于显示双x轴与双y轴

刻度:
ax.xaxis.set_major_locatorax.xaxis.set_minor_locator x轴主副刻度
ax.yaxis.set_major_locatorax.yaxis.set_minor_locator y轴主副刻度

MultipleLocator类控制刻度的疏密

设置刻度文本样式:get_xtickbabels或者get_ytickbabels函数

设置刻度文本内容:ax.xaxis.set_major_formatter结合FuncFormatter来实现

文本:默认是西方字体,需要设置为中方字体,windows下好解决,但是linux下面试了好多次都不行,以后在填坑吧

from matplotlib import pyplot as plt

plt.rcParams['font.sans-serif'] = ['FangSong'] # 设置字体以便正确显示汉字
plt.rcParams['axes.unicode_minus'] = False # 正确显示连字符

一些函数
suptitle、set_title、set_xlabel、set_ylabel、text、annotate、figtext
其中text与annotate是在子图上写文字,后者会生成一个箭头,而figtext是在画布上写文字

fig = plt.figure()
fig.suptitle('画布标题')

ax = fig.add_subplot(111)
ax.set_title('子图标题')
ax.set_xlabel('x轴标注文本', fontdict={'fontsize':14})
ax.set_ylabel('y轴标注文本', fontdict={'fontsize':14})
ax.text(3, 8, '边框颜色', style='italic', bbox={'facecolor':'red', 'alpha':0.5, 'pad':10})
ax.text(2, 6, r'LaTex: $E=mc^2$', fontsize=15)
ax.text(0.95, 0.01, '坐标内绿色文字', verticalalignment='bottom', horizontalalignment='right', transform=ax.transAxes, color='green', fontsize=15)
ax.plot([2], [1], 'o')
ax.annotate('annotate文字', xy=(2, 1), xytext=(3, 4), arrowprops={'facecolor':'black', 'shrink':0.05})
ax.set_xlim(0,10)
ax.set_ylim(0,10)

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/714238.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存