matplotlib 是基于python的一款可视化神器,类似于 ggplot2,它基本能涵盖常见的一些图形。同时得益于强大的python社区支持,这个包的功能也在不断增加。有时候写多了python,再写R,一时半会还想不起代码咋写。同时python中用于统计的包也比较全面,自己对python了解的还是多一些,准备在数据可视化方面用matplotlib

matplotlib支持一些常见的图形例如:

  • 线图;

  • 散点图;

  • 等高线图;

  • 条形图;

  • 柱状图;

  • 3D 图形,

  • 甚至是图形动画等等.

官网网页

https://matplotlib.org/

学习视频教程: 莫烦的

https://morvanzhou.github.io/tutorials/data-manipulation/plt/1-1-why/

话不多说,先上几张漂亮的图片,压压场

安装

  • 使用pip安装

python -m pip install -U pippython -m pip install -U matplotlib
#pip install matplotlib --user#引入matplotlib包import matplotlib.pyplot as pltimport numpy as np
fig, ax = plt.subplots()  # Create a figure containing a single axes.ax.plot([1, 2, 3, 4], [1, 4, 2, 3])  # Plot some data on the axes.

plt.subplots()函数返回两个对象

  • fig 图形对象

  • ax 坐标轴对象
    当然如果不需要操作坐标轴的话,也可以直接使用plot函数

plt.plot([2,3,5,6],[2,4,5,6])plt.plot([2,3,5,6],[2,4,5,6]) #直接使用plot函数

更加深入的理解图片的构造

figure=plt.figure() ##没有坐标轴的空白图片,啥也看不到fig,ax=plt.subplots() ##带坐标轴的空白图片,只有单个坐标轴

fig,axs=plt.subplots(2,2) ##2x2的四坐标轴图片

Axes对象

  • 通常Axes就是包含data的一个图片

  • 一张figure可以有多个Axes

  • 而一个Axes只属于某一个figure

  • Axes包含有两个或者3个Axis(坐标轴)

  • Axes类似于ggplot分面中的一个分面

对坐标轴中显示数据范围的控制

axes.Axes.set_xlim() ##控制X轴显示范围axes.Axes.set_ylim() ##控制y轴显示范围

控制坐标轴标签与图形标签

axes.Axes.set_title() ##图片标签axes.Axes.set_xlabel() ##x轴标签axes.Axes.set_ylabel() ##y轴标签

控制图例名称和显示图例

axes.plot(data,label="图例名")axes.legend()
import matplotlibimport matplotlib.pyplot as pltmatplotlib.use('qt5agg')fig,axs=plt.subplots(2,1) ## 绘制2X1 图片axs[0].plot([1,2,3,4],[4,5,6,7],label="liner1") #第一张图,以及图例axs[0].plot([2,4,5,6],[4,5,6,7],label="liner2") #第一张图,以及图例axs[1].plot([1,6,7,8],[5,6,7,8],label="test") # 第二张图 以及图例for item in axs:   #批量设置标题 和图例    item.set_xlim(0,10)    item.set_xlabel('x label')    item.set_ylabel('y label')    item.set_title('test')    item.legend()plt.savefig("test.png")

Axis对象

  • 用于设置坐标轴范围

  • 控制坐标轴上显示的标记,Locator对象

  • 控制坐标轴上显示的字符 Formatter对象

Artist

基本上所有的figure都会用到Artist对象,并且Artist是与Axes对象绑定在一起使用的。Artist对象就包含以下几个对象

  • Text

  • Line2D

  • collection

  • Patch

输入数据格式

所有的绘图数据都是基于numpy.array类型进行的,当然有些类似array的数据类型,例如pandas中的dataFrame,numpy中的matrix;这些数据类型作为输入数据时,可能不能够正常的工作,所有还是将它们转换成numpy.array之后再绘制图片吧

  • 将panda 数据框转换

import numpy as npimport pandasa=pandas.DataFrame(np.random.rand(4,5), columns = list('abcde')) ##获取4x5的随机数据框print(a)          a         b         c         d         e0  0.505938  0.742418  0.732312  0.008823  0.5592011  0.834437  0.657429  0.136503  0.654495  0.8418732  0.725788  0.746307  0.240214  0.732954  0.1197963  0.452142  0.172521  0.103506  0.472862  0.744575a_array=a.valuesprint(a) ##看起来没变化,实质上一个是数据框,一个是数组          a         b         c         d         e0  0.505938  0.742418  0.732312  0.008823  0.5592011  0.834437  0.657429  0.136503  0.654495  0.8418732  0.725788  0.746307  0.240214  0.732954  0.1197963  0.452142  0.172521  0.103506  0.472862  0.744575

将numpy.matrix转换

import numpy as npb = np.matrix([[1, 2], [3, 4]])print(b)[[1 2] [3 4]]b_asarray = np.asarray(b)print(b)[[1 2] [3 4]]

pyplot两种绘图方式

面向对象的方式

这种在写脚本的时候,可以封装成函数,在不修改代码的情况下,仅仅改变数据就可以获得不同的图片。用的比较多;不涉及与用户的交互

import matplotlib.pyplot as pltx=np.linspace(0, 2, 100)fig,ax=plt.subplots()ax.plot(x,x,label='liner')ax.legend()

直接调用pyplot方法

这个有点类似ggplot2,在jupyter中用的频繁。不过个人还是比较喜欢用第一种面向对象的方式,毕竟对象嘛..

import matplotlib.pyplot as pltx=np.linspace(0, 2, 100)plt.plot(x,x,label="liner")plt.legend()

还有第三种,之后遇到在看吧

如何导出图片

文档里用了一个词BacKends,意思就是针对不同的需求,导出不同类型的图片

  • AGG 支持png

  • PS 支持ps、eps

  • PDF 支持pdf

  • SVG 支持svg

  • Cairo 支持png ps pdf svg

配置

一般来说不用配置,能够根据系统自动检测,
linux中配置一下环境变量即可

$ export MPLBACKEND=qt5agg$ python simple_plot.py##或者$ MPLBACKEND=qt5agg python simple_plot.py
import matplotlibmatplotlib.use('qt5agg')##导出图片matplotlib.pyplot.savefig('filename')

matplotlib 显示批量图片_matplotlib入门相关推荐

  1. matplotlib 显示批量图片_chapter4-1 简单数据可视化包Matplotlib整理1

    Matplotlib是Python数据可视化最简单常用的包之一,笔者希望通过本篇文章和之后的常用技巧补充,将自己在科研和工作中积累和摘抄的数据可视化包使用经验和技巧笔记展示大家~ 本部分技巧知识点主要 ...

  2. matplotlib显示彩色图片还是黑白图片

    彩色图片 plt.imshow(image_show) 黑白图片 plt.imshow(image_show,cmap='gray')

  3. python 把matplotlib绘制的图片显示到html中

    需求 一般网页中图片显示是给url链接过去,但是有的时候显示的图表是临时计算绘制的,并不需要保存,因此就需要直接显示一个图片的方法. 灵感是来自于jupyter,发现他是这样的: 估计是base64编 ...

  4. matplotlib中文文档_python绘图库——Matplotlib及Seaborn使用(入门篇1)

    在数据分析过程中,数据及模型可视化是无可避免的,同时这也是展示我们数据分析成果的最佳方式.因此,熟悉掌握绘图库的使用,对精进我们的数据分析技能起着不可替代的作用. 今天,我们就来了解一下python强 ...

  5. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  6. python matplotlib 显示opencv的图像

    python matplotlib 显示opencv的图像 首先需要import import cv2 import numpy as np from matplotlib import pyplot ...

  7. 为什么matplotlib显示opencv图像不正常

    在前面的<数字图像的加载.显示和输出>中提到,opencv对多个图片输出在同一个窗口并没有直接的支持手段,但有时候我们会有这个需求,这时可以用matplotlib搭配使用. 下面将4张图片 ...

  8. Android批量图片载入经典系列——使用LruCache、AsyncTask缓存并异步载入图片

    一.问题描写叙述 使用LruCache.AsyncTask实现批量图片的载入并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)载入图片,并放入缓存中 2.及时 ...

  9. Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片

    一.问题描述 使用LruCache.AsyncTask实现批量图片的加载并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)加载图片,并放入缓存中 2.及时移除 ...

最新文章

  1. python打印日志
  2. AMD/NV大跌2周后仅两天收复失地 挖矿成背后推手
  3. soapui工具_python接口自动化(四)--接口测试工具介绍(详解)
  4. centos下添加管理员组和添加管理员用户及相关操作
  5. LIVE555再学习 -- FFmpeg + live555实现RTSP直播
  6. deepin下Clion连接mysql_CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库...
  7. 机器学习算法总结(六)——EM算法与高斯混合模型
  8. Spring Boot入门篇-默认安全配置
  9. C语言-输入任意多个数字,数字间用空格隔开,然后将数字求和。
  10. 服务器上不存在该种子文件,风行为什么点击种子链接总会弹出“找不到文件关联或无效的菜单句柄”...
  11. 火车头翻译-火车头采集翻译插件使用教程【2022】
  12. 计算机专业论文要怎么写,计算机专业本科生论文摘要怎么写 计算机专业本科生论文摘要范文参考...
  13. 如何将PPT输出为高精度的图片
  14. Effective C++改善程序与设计的55个具体的做法
  15. 伊朗加油站遭网络攻击致瘫痪、Babuk勒索软件源代码泄露|10月28日全球网络安全热点
  16. 银河系中心黑洞的第一张照片,本文带你了解发现的过程
  17. L2-4 彩虹瓶 (25 分)-2019天梯赛全国总决赛
  18. 无需设置权限您照样可以访问OBS桶中的数据?
  19. 6.3 Faddeev-Leverrier算法求特征多项式
  20. 樊登小读者,不做“带娃工具”的产品,只为亲子共同成长负责

热门文章

  1. 单元测试工具 Numega
  2. c语言十六实验答案,《C语言》上机实验题及参考答案
  3. 通过VNC Viewer连接CentOS 6.9
  4. STL学习系列七:优先级队列priority_queue容器
  5. 数据字符集mysql主从数据库,分库分表等笔记
  6. TNS 无监听解决方案
  7. Java 中的细节补充
  8. 使用Linux创建自己的视频流服务器
  9. 大数据与大量数据处理_我们如何处理和使用如此大量的数据?
  10. 怎么成为开源贡献者_为什么要成为开源的支持者