Matplotlib基础01:基本语法

Matplotlib基础01基本画图语法

Matplotlib:

第三方库,可以快速方便的生成高质量的图表。包括:直方图,柱形图,折线图,散点图,气泡图,三维图等


绪论

使用matplotlib数据可视化:

        数据分析阶段:理解和洞悉数据之间的关系
        算法调试阶段:发现问题,优化算法
        项目总结阶段:展示项目成果

第一:figure对象

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True, FigureClass=<class 'matplotlib.figure.Figure'>, clear=False, **kwargs)
  1. 要画图,必须先创建画布,使用figure对象创建一个画布
    语法:figure(num,figsize,dpi,facecolor,edgecolor,frameon)
    参数详解:
    num:图像编号,或者名称,取值为数字/字符串!!!实际上就是窗口名字
    figsize:绘图对象的宽与高,单位为英寸
    dpi:绘图对象的分辨率,缺省值:80
    facecolor:背景颜色
    edgecolor:边框颜色
    frameon:表示是否显示边框
    FigureClass:matplotlib.figure.figure的子类`可以选择使用自定义的“.Figure”实例。
    clear: 可选参数,默认是false,如果提供参数为ture,并且该窗口存在的话 则该窗口内容会被清除。

第二:给图表添加标题

  1. 添加全局标题:suptitle(标题名)
    suptitle(标题名)参数: 默认值
    x,y,都是标题位置的坐标------------------(0.5,0.98)
    color:标题的颜色-----------------------黑色
    backgroundcolor:标题背景颜色-----------12
    fontsize:标题的字体大小----------------(xx-small,x-small,small,meduim,large,x-large,xx-large)
    fontweight:字体的粗细------------------(light,normal,medium,semibold,bold,heavy,black)
    fontstyle:字体风格---------------------normal(italic,oblique)
    horizontalalignment:标题水平对齐方式----center(left,right)
    verticalalignment:标题的垂直对齐方式----top(center,bottom,baseline)

  2. 添加子标题:title(标题名)
    title(标题名)参数:
    loc:标题位置---------------------------left,right
    rotation:标题文字旋转角度--------------
    color:标题颜色------------------------黑色
    fontsize:标题的字体大小----------------(xx-small,x-small,small,meduim,large,x-large,xx-large)
    fontweight:字体的粗细------------------(light,normal,medium,semibold,bold,heavy,black)
    fontstyle:字体风格---------------------normal(italic,oblique)
    horizontalalignment:标题水平对齐方式----center(left,right)
    verticalalignment:标题的垂直对齐方式----top(center,bottom,baseline)
    fontdict:设置参数字典


第三:给图表设置中文字体

还可以设置中文字体,python中的matplotlib仅支持Unicode编码,默认是不显示中文的但是我们可以自己配置,让它支持中文。
注意;运行时要配置参数:指定所绘制图表的各种默认属性,是matplotlib中的全局变量
1.在脚本运行的开始处设置

plt.rcParams['axes.unicode_minus']=False    # 用来正常显示负号
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']# 用来正常显示中文标签

2.在每一处使用到中文字体的地方,都加上一个字体属性

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
#中文字体文件".ttf" 
font = FontProperties(fname='/STHeiti Light.ttf', size=16)

plt.plot([0, 1], [1, 2])
plt.title('显示中文', fontproperties=font)
plt.show()

3.永久解决办法
https://blog.csdn.net/huanyingzhizai/article/details/90439212


第四:给图表划分子图

plt.subplot(nrows, ncols, index, **kwargs) #行,列,子图序号 
或
plt.subplot(pos, **kwargs) 
 """*pos*是一个三位整数,其中第一位是
行数,第二列数,第三列数
即子批次的索引。如(235)与形式1:(2,3,5)。注意,所有整数必须小于
10。"""
或
plt.subplot(ax) 

划分子图:就是让画布里面分成多少张图像(又叫轴域Axes)
使用函数:plt.subplot(行数,列数,子图序号)
注意:

  1. 每个subplot()函数只创建一个子图,要传创建多个子图,就得多条语句。
    否则,你写了多少条subplot语句,就只有多少个子图。
  2. 当subplot函数里面的三个参数都小于10时,可以省略逗号
    写为:如subplot(2,2,1)转化为第二种形式subplot(221)

第五:tight_layout

def tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None):
    """
    自动调整子批参数以提供指定的填充。
    Parameters
    ----------
    pad : float
        在图形边缘和子块边缘之间填充,作为字体大小的一部分。
    h_pad, w_pad : float, 可选参数
        相邻子块边缘之间的填充(高度/宽度),作为字体大小的一部分。默认为*pad*。
    rect : tuple (left, bottom, right, top), 可选参数
        A rectangle (left, bottom, right, top) in the normalized
        figure coordinate that the whole subplots area (including
        labels) will fit into. Default is (0, 0, 1, 1).
    """

检测坐标轴的标签,刻度标签,和子图标题,自动调节子图,使之填充整个绘图区域,并消除子图之间的重叠
语法:一般只设置rect参数
tight_layout(rect=[left,bottom,right,top]

代码演示

import matplotlib
import matplotlib.pyplot as  plt 

#配置,使之能支持中文
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']# 用来正常显示中文标签
#创建figure对象:
plt.figure(num='hello figure',figsize=(8,7),dpi=70,facecolor='r',edgecolor='b',frameon=True)
#设置标题
plt.suptitle('全局标题',fontsize=20,color='green',backgroundcolor='yellow')
#划分画布区域
plt.subplot(2,2,1)
#设置子标题
plt.title('子标题1')
plt.subplot(2,2,2)
#设置子标题,使用字典设置标题参数,如果使用了含有plot的函数,就说明已经绘制在画布里面了
my_fontstyle = {'fontsize':12,'color':'blue','rotation':30}
plt.title('子标题2旋转30°',fontdict=my_fontstyle)
plt.subplot(2,2,3)
plt.title('子标题3')
plt.subplot(2,2,4)
plt.title('子标题4')
#填充
plt.tight_layout(rect=[0,0,1,1])
#绘制figure
#plt.plot()
#显示画布
plt.show()

3个子图
在这里插入图片描述
4个子图
在这里插入图片描述

发布了50 篇原创文章 · 获赞 24 · 访问量 2401

猜你喜欢

转载自blog.csdn.net/qq_44861675/article/details/104355094
今日推荐