IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python实践:Pyplot绘图超简洁核心总结 -> 正文阅读

[Python知识库]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绘制的曲线显示出来

花式阶段


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

花式操作:

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

对应函数

  • 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
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:17:51  更:2022-04-27 11:18:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:46:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码