0x01 环境搭建

使用matplotlib画图主要需要matplotlib和numpy这两个库,其中matplotlib是画图的主要库,numpy是数学计算相关的库。安装如下:

    pip install matplotlib numpy

0x02 基本图速成画法

  • 散点图速成画法

散点图用于显示两组数据的分布

    import numpy as np
    import matplotlib.pyplot as plt

    # 设置随机数有多少
    X = 1000
    # 这两行产生x和y两个大小为1000的随机数组
    x = np.random.rand(X)
    y = np.random.rand(X)
    # scatter()方法用于绘制散点图,其中:
    # 第一个参数为x轴数值
    # 第二个参数为y轴数值
    # 第三个参数为点的大小,注意,这个大小指的是点的面积
    # 第四个参数为点的形状,点还可以是其他形状,具体可以查文档(见附)
    # 第五个参数为透明图
    plt.scatter(x, y, s=20, c="r", marker='o', alpha="0.5")
    plt.show()

结果如下图:

W3)FJ$J%P2$2E92_8L2TJTE.png

  • 折线图速成画法

折线图是将各个数据用直线连接起来组成的图形

    # 在-10到10这个区间内生成均分的
    x = np.linspace(-10, 10,5)
    y = np.sin(x)
    # plot()方法用于画折线图
    plt.plot(x, y)
    plt.show()

结果如下图:

@4VM%D7%K6_QU[ZX))@_FUB.png

有时候需要时间作为横坐标的时候,需要另外一个方法来画折线图

    # plot_data()方法用于画横坐标为时间的折线图,其中linestyle='-'的含义是将点用'-'连接起来
    plt.plot_date(x, y, linestyle='-')
  • 条形图速成画法

条形图是以长方形为的长度为度量的统计图表

    import numpy as np
    import matplotlib.pyplot as plt

    N = 5
    y = [20, 10, 30, 25, 15]
    index = np.arange(N)
    # bar()方法用于画条形图,其中
    # left参数是指x轴每一条的底部位置数据
    # height是指每一条的高度
    # color是条形图颜色
    # width是每一条的宽度
    plt.bar(left=index, height=y, color='r', width=0.5)
    plt.show()

结果如下图:

SK)5HJ76EBHID5(H{64G9K8.png

当然上图只是垂直方向的条形图,常见的条形图除了垂直方向的还有水平方向的,水平方向的有两种画法

    # 可以用bar()方法画水平的条形图,其中
    # left参数必须为0
    # bottom参数相当于垂直条形图的left参数
    # width相当于垂直条形图的height参数
    # color是颜色
    # height相当于垂直条形图的width参数
    # orientation是设置条形图方向
    plt.bar(left=0, bottom=index, width=y, color='red', height=0.5, orientation='horizontal')
    plt.show()

结果如下:

ZPA@OSOXEOXT5_)3U84NF9T.png

第二种画条形图的方法如下:

    # 第二种方法可以用barh()方法画水平的条形图,其中
    # left参数必须为0
    # bottom参数相当于垂直条形图的left参数
    # width相当于垂直条形图的height参数
    plt.barh(left=0, bottom=index, width=y)
    plt.show()

结果如下:

ITD6S}CXN[B8%7%VZ7QFC2S.png

当然,除此之外,还有多条个条形图一起显示

    # 注意这里的left后面加的0.3要和width一样
    plt.bar(left=index, height=y, width=0.3)
    plt.bar(left=index+0.3, height=y, width=0.3)
    plt.show()

结果如下图:

T6(2@U%YBKEL2NYC{UNMT~O.png

  • 饼图速成画法

    import matplotlib.pyplot as plt
   
    labels = 'A', 'B', 'C', 'D'
    fracs = [15, 45, 10, 30]
    explode = [0, 0.1, 0, 0]
    # axes()方法的aspect=1参数的作用是设置x和y轴的比例为1:1
    plt.axes(aspect=1)
    # pie方法用于画饼图,其中
    # x参数为饼图每一份的值(和不一定为100)
    # labels参数为每一份的名称
    # autopct="%.0f%%"设置显示百分比
    # explode参数设置某一块凸显
    # shadow参数设置是否有有阴影效果
    plt.pie(x=fracs, labels=labels, autopct="%.0f%%", explode=explode, shadow=True)
    plt.show()

结果如下图

NQ@HT180}XDY205%CM)%KF4.png

0x03 结语

这次只介绍了简单图速成方式,当然还有很多其它的骚操作,后面有空补上

0x04 附:查文档方式

以第一个图为例,查询散点图相关方法
先进入matplotlib
见下图:

~EC95ZKLO0U1PB$6E20}0$A.png

图中红色圈出来的部分可以查询相关东西,这里输入scatter,如下图:

4(C6@NXR%Y$MIL{9R2SX5%2.png

点进去就可以查看到scatter方法画散点图的详细内容。