栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

Python绘图超简洁核心总结
    • 入门阶段
    • 花式阶段
    • 实战DEMO
    • 参考链接

兄弟们,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绘制的曲线显示出来
花式阶段

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

花式操作:

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

对应函数:

  • 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)
    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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号