Python实践:Pyplot绘图超简洁核心总结

Python绘图超简洁核心总结

兄弟们,Python啥也不会,如何画出一张最基本的图?相较其他文章,本文特色是体系化,搞清楚画图的来龙去脉,一文掌握画图的核心三板斧及高频操作。

入门阶段


天才第一步,首先应该问下:绘图的基本骨架是什么?

我认为,核心主要有:图幅、横纵坐标、曲线类型(曲线、散点、柱状)。

好开干,先导入对应的工具包:matplotlib

import matplotlib.pyplot as plt  	 # 绘图用
import numpy as np   				# 数据处理用

其次,准备好相关的横纵坐标数据x, y

图源:ref1

那么如何用Python代码去实现对应功能呢?

基本流程:

  • 横纵坐标数据
  • 绘制图形
  • 图片显示

对应函数:

  • plt.figure(num)
    • 创建画板num,若无入参,则默认为1
    • 返回对应画板句柄
  • plt.plot(x, y, format_string, **kwargs)
    • x:x轴数据,列表或数组,可选
    • y:y轴数据,列表或数组
    • format_string:控制曲线的格式字符串,可选
    • **kwargs:第二组或更多,(x,y,format_string)
    • 注:当绘制多条曲线时,各条曲线的x不能省略
  • plt.show()
    • 无入参,将plot绘制的曲线显示出来

示例:

import matplotlib.pyplot as plt
import numpy as np

x = list(range(32))  # x = [0, 31]
x = np.array(x)      # list转为numpy数组
y = x**2             # y = x^2

plt.figure(1)        # 新建一个画板
plt.plot(x, y)       # 格式控制等可以省略
plt.show()           # 结果显示

花式阶段


更进一步,过了雪中送炭阶段,来点锦上添花的东西。

花式操作:

  • 曲线控制:颜色、粗细、实虚
  • 图例、标题、横纵轴标签
  • 网格线、坐标轴刻度范围
  • 图片保存、关闭

对应函数

  • xlabel(‘xx’),横轴标签名
  • ylabel(‘yy’),纵轴标签名
  • title(‘title’),图标题
  • legend(‘曲线说明’),添加图例说明不同曲线
  • axis([xmin, xmax, ymin, ymax]) ,同时控制xy轴的范围
    • xlim([xmin, xmax]),单独控制x轴的范围
    • ylim([ymin, ymax]),单独控制y轴的范围
  • grid(),显示网格线
  • savefig(‘path with filename’),保存当前figure画板中的图
  • close(fig1),关闭画板,通过figure()函数返回的句柄

实战DEMO


import matplotlib.pyplot as plt      # 绘图用
import numpy as np                   # 数据处理用
import math as mt                    # 数学运算


def data_generation(max_val, band_num):
    freq = range(max_val)
    max_val_lg = mt.log10(max_val)
    band_interval = max_val_lg / band_num
    bands = []
    for i in range(band_num):
        tmp = mt.pow(10, i * band_interval) - 1
        val = int(tmp)
        if val < i:
            val = i
        bands.append(val)
    return bands


def plot_basic(x, y):
    plt.figure(1)
    plt.plot(x, y)
    plt.show()


def plot_advance(x, y0, y1):
    fig2 = plt.figure(2)
    # color: 'r/b/y/k/g',红、蓝、黄、黑、绿
    # marker: 'o/.',大圆点、小点,表征显示描点,一般默认即可
    # linestyle: 'solid/--, dashed/-, dotted, -.',实线,虚线,点虚线,点划线
    l1 = plt.plot(x, y0, color='r',marker='o', linestyle='dashed', label='Me')   # 返回结果为对线操作的句柄
    l2 = plt.plot(x, y1, color='k',marker='.', linestyle='--', label='You')        # 黑色,linestye: -, --实线, 

    
    plt.xlabel('time/day')                   # 显示横轴说明
    plt.ylabel('salary/dollar')              # 显示纵轴说明
    plt.title('The change of salary')
    plt.legend()                             # 显示图例,即每条线对应 label 中的内容
#     plt.axis([-1, 33, -1, 480])            # [xmin, xmax, ymin, ymax]
    plt.xlim(-1, 33)                         # 或单独设置
    plt.ylim(-1, 280)
#     plt.grid()                             # 显示网格背景
    plt.grid(linestyle='--')
    plt.show()
#    plt.savefig('./salary.jpg')
    fig2.savefig('./salary.jpg')
    # plt.close(fig2)
    
    
if __name__ == "__main__":
    y0 = range(30)                           # 刻画下理想中30天日薪增长情况
    y1 = data_generation(480, 30)
    x  = range(30)
    
    print('start processing...')
    plot_basic(x, y1)
    plot_advance(x, y0, y1)
    print('done!')

效果图如下:

在这里插入图片描述

更多进阶用法见参考链接,里面涉及如一个画板中绘制多幅子图的方法。

如果小伙伴觉得本文有帮助,欢迎评论留言哦,下一篇总结分享gif动图制作

参考链接


  1. python如何使用Matplotlib画图(基础篇),link
  2. python常用数据作图–matplotlib用法(相关设置及常用图),link
  3. Plot不同字符串组合控制粗细、大小颜色等,link
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值