Matplotlib

Matplotlib是最流行的Python底层绘图库,主要做数据可视化图表


导包:
import matplotlib.pylot as plt ………….绘图库
import numpy as np ………………………numpy库


命令:

// 折线图
折线图用于显示随时间或有序类别的变化趋势

# 可以绘制多个图表
plt.plot(
    x轴,                      
    y轴,
    color='g',                                 # 颜色,css或者16进制都可以
    linestyle='',                              # 线条样式, --虚线
    linewidth=5,                               # 线条粗细

    marker='o',                                # 标记风格
    markerfacecolor='#ffff00',                 # 标记颜色
    markersize=10,                             # 标记大小

    alpha=0.5,                                 # 透明度

    lable='标题一',                             # 为图中显示标识名字
)

# 图表标题
plt.titie(
    'hello图表标题 $a^{2}+b^{2}=C^{2}$',         # 可以使用$引入一部分latex文本排版语法和公式
    fontproperties='SimHei',
    color='g'                                  # 标题颜色
    fontsize=24,                               # 字体型号
)       

# x,y轴标题                                       
plt.xlable('x轴标题', fontproperties='SimHei')  # x轴标题, r为转义

# x,y刻度
plt.xticks(
    [0,1,2,5,8,10],                            # 刻度设置
    ['2000','2001','2002','2005','2008'],      # 在之前的刻度上在换个名字
    fontsize=14,                               # 文字大小
    rotation=90,                               # 旋转角度
)

# axis坐标范围, axis比 ticks优先级要高
plt.axis([-1,11,-2,12])                        # X轴-1到11,Y轴-2到12

# loc位置,frameon有无边框, 需要全局修改默认字体
plt.legend(loc='best', frameon=False) 

# 网格
plt.grid(True)

# 存为png文件, 电脑为72, 出版至少在300以上
plt.savefig('test',dpi=72) # dpi 分辨率

# 显示图片
plt.show()

这里写图片描述
这里写图片描述


// 散点图
散点图可以显示若干数据系列中各数值之间是否存在相关性
1. 折线图线条样式为空,设置一个标记
2. 如下

plt.scatter(
    x轴,
    y轴,
    color='g',                                # 颜色,css或者16进制都可以 
    marker='o',                               # 样式
    linewidth=5,                              # 大小
    alpha=0.5,                                # 透明度
)

plt.show()

// 条形图
柱状图用来比较各独立类别下的某单独数据的大小

plt.barh(
    y轴,                                      # 横条离开x轴的距离
    x轴,                                      # 横条的距离
    height=0.2,                               # 控制y轴线条的粗细
)

# 改变y轴的值
plt.yticks(y,['a','b','c','d','e'])     

plt.show()

// 柱状图(纵向)
柱状图用来比较各独立类别下的某单独数据的大小

# 对比图片把两个图表的width设置0.3,在把第二个图表的x轴加上0.3即可
plt.bar(
    x轴,
    y轴,

# 加背景网格
plt.grid()  

# 对齐背景网格
plt.xticks(x1+0.15,['a','b','c','d','e','f'])  

plt.show()

// 直方图
直方图能直观表达数据的分布情况,一般用来表示同等区间内,某类数值出现的频率
直方图与柱状图的区别:

  • 直方图:分区之间连续无间断,表示连续变量;值用矩形面积表示
  • 条形图:各柱之间有间隙,表示孤立的、不连续分类变量;值用矩形长度表示
plt.hist(
    直方图数据,
    直方的个数,
    normed=1,                                # 将y轴默认的数值出现个数归一化为出现的概率
    histtype='stepfilled',                   # stepfilled填充面积,step只有线条
    facecolor='b',                           # 面积颜色
    alpha=0.75                               # 透明度
)

plt.show()

// 饼图
饼图用于显示各项相对总和的百分比大小

plt.pie(
    [25,25,25,25],
    explode=(0, 0.1, 0, 0),                            # 突出块,突出比例
    labels=['class1','class2','class3','class4'],      # 逆时针起名
    autopct='%1.1f%%',                                 # 显示各个饼块百分比
    shadow=False,                                      # 阴影效果
    startangle=90,                   # 饼图起始的角度,度数,默认0为右侧水平180度开始,逆时针旋转
)

# 正圆形饼图,x/y轴尺寸相等.默认是扁图
plt.axis('equal')

plt.show()

// 文本注释

# 普通注释
plt.text(
    x,
    y,
    '任意位置文本',            # 显示文本内容
    fontproperties='SimHei', # 字体,解决汉字乱码
    fontsize='24',           # 文字大小
    rotation=45              # 旋转角度
)

# 任意位置增加带箭头的注释文本
plt.annotate(
    '这里转折', #显示字符串
    fontproperties='SimHei', # 字体,解决汉字乱码
    xy=(3,4), # 箭头位置
    xytext=(3.5,4.5), # 文本位置

    arrowprops=dict( # 字典类型,定义一些元素样式
        facecolor='red', # 箭头颜色
        shrink=0.1, # 箭头的起始和结束位置两侧的空白大小
        width=2, # 箭头宽度
    )
)

// 穿越线条

# 穿越x | y轴的线条,axvline函数,x,vmin,vmax
plt.axhline(
    y=4,          # y轴坐标
    color='r',    # 颜色
    linewidth=1,  # 线宽
    xmin=0.6,     # 从左到右,xmin,线条在x轴起始位置,比例,0-1,从60%位置开始
    xmax=0.85,    # xmax,线条在x轴结束位置,比例,0-1,从85%位置结束
)

# 穿越x轴的矩形,参数:ymin,ymax,xmin=0,xmax=1
p = plt.axhspan(
    0.5, # 矩形在y轴起始坐标
    1.5, # 矩形在y轴结束坐标
    facecolor='0.5', # 颜色
    alpha=0.2 # 透明度
)

# 穿越y轴的矩形,xmin,xmax,ymin=0,ymax=1,...
p = plt.axvspan(
    0.7, # 矩形在x轴起始坐标
    1.3, # 矩形在x轴起始坐标
    0.05, # 从下到上,矩形在y轴起始位置,比例,0-1,从5%位置开始
    0.5, # 矩形在y轴结束位置,比例,0-1,从50%位置结束
    facecolor='g',
    alpha=0.2
)

进阶

// 创建多个子对象

# 第一个图像
plt.figure()                # 默认编号为1,每个figure是一个单独的图像
plt.plot([1,2,3])

# 第二个图像
plt.figure(
    2,                     # 指定图像编号,创建和选择图像使用
    figsize=(18,4),        # 图像尺寸
    dpi=80,                # 分辨率,没什么用
    facecolor='#cccccc',   # 背景颜色
) 
plt.plot([1,3,2])

# 指定在第一个图像里画
plt.figure(2) 
plt.plot([5,2,3])

// 创建多个ax子对象
简单绘图区域:将一个fig大图分割为多个ax子图,分别绘图,同时输出

# 第一行第一列的第一个图像
# 小于10可以去掉逗号
plt.subplot(2,2,1)
plt.plot([1,2,3])

# 第两行第两列第二个图像
plt.subplot(2,2,2)
plt.plot([1,2,3])

// 多个父级嵌套多个子对象


其他

// Matplotlib在Retina屏幕中显示模糊问题


%config InlineBackend.figure_format = 'retina'

// 修改全局默认字体

  • 优点:适用于所有中文乱码情况
  • 缺点:修改后影响本工作空间内所有代码,本次运行中删除代码也不会恢复默认,如想恢复默认可将字体名改回系统默认的sans-serif
import matplotlib.pyplot as plt

import matplotlib                                    # 载入matplotlib完整库
matplotlib.rcParams['font.family']='Microsoft Yahei' # 字体,改为微软雅黑,默认 sans-serif
matplotlib.rcParams['font.size']=32                  # 可调整字体大小,整数字号,默认10

// 内联和GUI显示
切换展示方式时可能需要重启Jupyter Notebook内核才能生效

# 外置GUI展示
%matplotlib qt5
# 内联显示,不用加载plt.show()
%matplotlib inline
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

葬爱程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值