python-自动化篇-运维-可视化-绘图库-matplotlib

文章目录

  • Matplotlib
    • matplotlib开发环境搭建
    • 绘制基础
    • 绘制直线
    • 绘制折线
    • 设置标签文字和线条粗细
    • 绘制一元二次方程的曲线y=x^2
    • 绘制正弦曲线和余弦曲线
    • 散点图
    • 绘制柱状图
    • 绘制饼状图
    • 绘制直方图
    • 等高线图
    • 绘制三维图

Matplotlib

Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库。

matplotlib开发环境搭建

如果使用的是Anaconda Python开发环境,那么Matplotlib已经被集成进Anaconda,并不需要单独安装。如果使用的是标准的Python开发环境,可以使用下面的命令安装Matplotlib:

  1. Windows 系统安装 Matplotlib,执行如下命令:
pip install matplotlib

如果要了解Matplotlib更详细的情况,请访问官方网站。网址如下:https://matplotlib.org。
安装完Matplotlib后,可以测试一下Matplotlib是否安装成功。进入Python的环境使用下面的语句导入matplotlib.pyplot模块。如果不出错,就说明Matplotlib已经安装成功了。

import matplotlib.pyplot as plt

虽然上述的安装方式比较简单,但是有时候不能确保安装成功或者并不能保证安装的Matplotlib版本适合当今Python环境。在这个时候,建议读者登录Python官方网站https://www.python.org/,点击菜单PyPI输入Matplotlib到下载页如下图所示,在这个页面中查找与你使用的Python版本匹配的wheel文件(扩展名为“.whl”的文件)。例如使用的是64位的Python3.6,则需要下载matplotlib-3.1.0-cp36-cp36m-win_amd64.whl。
在这里插入图片描述
当读者下载到得到的文件是matplotlib-3.1.0-cp36-cp36m-win_amd64.whl,将这个文件保存在” E:/matp”目录下。接下来,需要打开一个命令窗口,并切换到“e:/matp”目录下。执行如下命令安装Matplotlib。

pip install   matplotlib-3.1.0-cp36-cp36m-win_amd64.whl

绘制基础

在使用Matplotlib绘制图形时,其中有两个最为常用的场景。一个是画点,一个是画线。pyplot基本方法的使用如下表。

在这里插入图片描述

绘制直线

在使用Matplotlib绘制线性图时,其中最简单的是绘制线图。在下面的实例代码中,使用Matplotlib绘制了一个简单的直线。具体实现过程如下:
(1)导入模块pyplot,并给它指定别名plt,以免反复输入pyplot。在模块pyplot中包含很多用于生产图表的函数。
(2)将绘制的直线坐标传递给函数plot()。
(3)通过函数plt.show()打开Matplotlib查看器,显示绘制的图形。
【示例】根据两点绘制一条线

import matplotlib.pyplot as plt
#将(0,1)点和(2,4)连起来
plt.plot([0,2],[1,4])
plt.show()

运行结果如下图:

在这里插入图片描述

在上述的实例代码中,使用两个坐标绘制一条直线,接下来使用平方数序列1、4、9、16和25来绘制一个折线图。

绘制折线

【示例】绘制折线图

import matplotlib.pyplot as plt
x=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(x,squares)
plt.show()

运行结果如下图:
在这里插入图片描述

设置标签文字和线条粗细

在上面的实例直线结果不够完美,开发者可以绘制的线条样式进行灵活设置。例如:可以设置线条的粗细、设置文字等。
【示例】绘制折线图并设置样式

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置图标标题,并在坐标轴上添加标签
plt.title('Numbers',fontsize=24)
plt.xlabel('datas',fontsize=14)
plt.ylabel('squares',fontsize=14)
plt.show()

在这里插入图片描述

Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决:

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签

【示例】解决标签、标题中的中文问题

import matplotlib.pyplot as plt
datas=[1,2,3,4,5]
squares=[1,4,9,16,25]
plt.plot(datas,squares,linewidth=5) #设置线条宽度
#设置中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']
#设置图标标题,并在坐标轴上添加标签
plt.title('标题设置',fontsize=24)
plt.xlabel('x轴',fontsize=14)
plt.ylabel('y轴',fontsize=14)
plt.show()

在这里插入图片描述

绘制一元二次方程的曲线y=x^2

Matplotlib有很多函数用于绘制各种图形,其中plot函数用于曲线,需要将200个点的x坐标和Y坐标分别以序列的形式传入plot函数,然后调用show函数显示绘制的图形。一元二次方程的曲线
【示例】一元二次方程的曲线

import matplotlib.pyplot as plt
#200个点的x坐标
x=range(-100,100)
#生成y点的坐标
y=[i**2 for i in x ]
#绘制一元二次曲线
plt.plot(x,y)
#调用savefig将一元二次曲线保存为result.jpg
plt.savefig('result.jpg') #如果直接写成 plt.savefig('cos') 会生成cos.png
plt.show()

运行结果如下图:
在这里插入图片描述

绘制正弦曲线和余弦曲线

使用plt函数绘制任何曲线的第一步都是生成若干个坐标点(x,y),理论上坐标点是越多越好。本例取0到10之间100个等差数作为x的坐标,然后将这100个x坐标值一起传入Numpy的sin和cos函数,就会得到100个y坐标值,最后就可以使用plot函数绘制正弦曲线和余弦曲线。
【示例】正弦曲线和余弦曲线

import matplotlib.pyplot as plt
import numpy as np
#生成x的坐标(0-10的100个等差数列)
x=np.linspace(0,10,100)
sin_y=np.sin(x)
#绘制正弦曲线
plt.plot(x,sin_y)
#绘制余弦曲线
cos_y=np.cos(x)
plt.plot(x,cos_y)
plt.show()

运行结果如下图:

在这里插入图片描述

上面的示例可以看到,调用两次plot函数,会将sin和cos曲线绘制到同一个二维坐标系中,如果想绘制到两张画布中,可以调用subplot()函数将画布分区。
【示例】将画布分为区域,将图画到画布的指定区域

import matplotlib.pyplot as plt
import numpy as np
#将画布分为区域,将图画到画布的指定区域
x=np.linspace(1,10,100)
#将画布分为2行2列,将图画到画布的1区域
plt.subplot(2,2,1)
plt.plot(x,np.sin(x))
plt.subplot(2,2,3)
plt.plot(x,np.cos(x))
plt.show()

运行结果图:

在这里插入图片描述

散点图

使用scatter函数可以绘制随机点,该函数需要接收x坐标和y坐标的序列。
【示例】sin函数的散点图

import matplotlib.pyplot as plt
import numpy as np
#画散点图
x=np.linspace(0,10,100)#生成0到10中100个等差数
plt.scatter(x,np.sin(x))
plt.show()

运行结果图:

在这里插入图片描述

【示例】使用scatter画10中大小100中颜色的散点图

import matplotlib.pyplot as plt
import numpy as np
# 画10种大小, 100种颜色的散点图
np.random.seed(0)
x=np.random.rand(100)
y=np.random.rand(100)
colors=np.random.rand(100)
size=np.random.rand(10)*1000
plt.scatter(x,y,c=colors,s=size,alpha=0.7)
plt.show()

运行结果图:

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

在这里插入图片描述

以下是颜色的缩写:

在这里插入图片描述

【示例】不同种类不同颜色的线

#不同种类不同颜色的线
x=np.linspace(0,10,100)
plt.plot(x,x+0,'-g')    #实线  绿色
plt.plot(x,x+1,'--c')   #虚线 浅蓝色
plt.plot(x,x+2,'-.k')   #点划线 黑色
plt.plot(x,x+3,'-r')    #实线  红色
plt.plot(x,x+4,'o')     #点   默认是蓝色
plt.plot(x,x+5,'x')     #叉叉  默认是蓝色
plt.plot(x,x+6,'d')    #砖石  红色

【示例】不同种类不同颜色的线并添加图例

#不同种类不同颜色的线并添加图例
x=np.linspace(0,10,100)
plt.plot(x,x+0,'-g',label='-g')    #实线  绿色
plt.plot(x,x+1,'--c',label='--c')   #虚线 浅蓝色
plt.plot(x,x+2,'-.k',label='-.k')   #点划线 黑色
plt.plot(x,x+3,'-r',label='-r')    #实线  红色
plt.plot(x,x+4,'o',label='o')     #点   默认是蓝色
plt.plot(x,x+5,'x',label='x')     #叉叉  默认是蓝色
plt.plot(x,x+6,'dr',label='dr')    #砖石  红色
#添加图例右下角lower right  左上角upper left 边框  透明度  阴影  边框宽度
plt.legend(loc='lower right',fancybox=True,framealpha=1,shadow=True,borderpad=1)
plt.show()

运行结果图:

在这里插入图片描述

绘制柱状图

使用bar函数可以绘制柱状图。柱状图需要水平的x坐标值,以及每一个x坐标值对应的y坐标值,从而形成柱状的图。柱状图主要用来纵向对比和横向对比的。例如,根据年份对销售收据进行纵向对比,x坐标值就表示年份,y坐标值表示销售数据。
【示例】使用bar绘制柱状图,并设置柱的宽度

import matplotlib.pyplot as plt
import numpy as np
x=[1980,1985,1990,1995]
x_labels=['1980年','1985年','1990年','1995年']
y=[1000,3000,4000,5000]
plt.bar(x,y,width=3)
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.xticks(x,x_labels)
plt.xlabel('年份')
plt.ylabel('销量')
plt.title('根据年份销量对比图')
plt.show()

运行结果图:
在这里插入图片描述

需要注意的是bar函数的宽度并不是像素宽度。bar函数会根据二维坐标系的尺寸,以及x坐标值的多少,自动确定每一个柱的宽度,而width指定的宽度就是这个标准柱宽度的倍数。该参数值可以是浮点数,如0.5,表示柱的宽度是标准宽度的0.5倍。
【示例】使用bar和barh绘制柱状图

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
x=np.arange(5)
y=np.random.randint(-5,5,5)
print(x,y)
# 将画布分隔成一行两列
plt.subplot(1,2,1)
#在第一列中画图
v_bar=plt.bar(x,y)
#在第一列的画布中 0位置画一条蓝线
plt.axhline(0,color='blue',linewidth=2)
plt.subplot(1,2,2)
#barh将y和x轴对换 竖着方向为x轴
h_bar=plt.barh(x,y,color='red')
#在第二列的画布中0位置处画蓝色的线
plt.axvline(0,color='red',linewidth=2)
plt.show()

运行结果图:

在这里插入图片描述

【示例】对部分柱状图,使用颜色区分

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(0)
x=np.arange(5)
y=np.random.randint(-5,5,5)
v_bar=plt.bar(x,y,color='lightblue')
for bar,height in zip(v_bar,y):if height<0:bar.set(edgecolor='darkred',color='lightgreen',linewidth='3')
plt.show()

运行结果图:

【示例】柱状图使用实例

import matplotlib.pyplot as plt
import numpy as np
#三天中三部电影的票房变化
real_names=['千与千寻','玩具总动员4','黑衣人:全球追缉']
real_num1=[5453,7548,6543]
real_num2=[1840,4013,3421]
real_num3=[1080,1673,2342]
#生成x  第1天   第2天   第3天
x=np.arange(len(real_names))
x_label=['第{}天'.format(i+1) for i in range(len(real_names))]
#绘制柱状图
#设置柱的宽度
width=0.3
plt.bar(x,real_num1,color='g',width=width,label=real_names[0])
plt.bar([i+width for i in x],real_num2,color='b',width=width,label=real_names[1])
plt.bar([i+2*width for i in x],real_num3,color='r',width=width,label=real_names[2])
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
#修改x坐标
plt.xticks([i+width for i in x],x_label)
#添加图例
plt.legend()
#添加标题
plt.title('3天的票房数')
plt.show()

运行结果图:

在这里插入图片描述

绘制饼状图

pie函数可以绘制饼状图,饼图主要是用来呈现比例的。只要传入比例数据即可。
【示例】绘制饼状图

#导入模块
import matplotlib.pyplot as plt
import numpy as np
#准备男、女的人数及比例
man=71351
woman=68187
man_perc=man/(woman+man)
woman_perc=woman/(woman+man)
#添加名称
labels=['男','女']
#添加颜色
colors=['blue','red']
#绘制饼状图  pie
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
# labels 名称 colors:颜色,explode=分裂  autopct显示百分比
paches,texts,autotexts=plt.pie([man_perc,woman_perc],labels=labels,colors=colors,explode=(0,0.05),autopct='%0.1f%%')#设置饼状图中的字体颜色
for text in autotexts:text.set_color('white')#设置字体大小
for text in texts+autotexts:text.set_fontsize(20)
plt.show()

运行结果图:

在这里插入图片描述

绘制直方图

直方图与柱状图的分格类似,都是由若干个柱组成,但直方图和柱状图的含义却有很大的差异。直方图是用来观察分布状态的,而柱状图是用来看每一个X坐标对应的Y的值的。也就是说,直方图关注的是分布,并不关心具体的某个值,而柱状图关心的是具体的某个值。使用hist函数绘制直方图。
【示例】使用randn函数生成1000个正太分布的随机数,使用hist函数绘制这1000个随机数的分布状态

import numpy as np
import matplotlib.pyplot as plt
#频次直方图,均匀分布
#正太分布
x=np.random.randn(1000)
#画正太分布图
# plt.hist(x)
plt.hist(x,bins=100) #装箱的操作,将10个柱装到一起及修改柱的宽度

运行结果图:

【示例】使用normal函数生成1000个正太分布的随机数,使用hist函数绘制这100个随机数的分布状态

import numpy as np
import matplotlib.pyplot as plt
#几个直方图画到一个画布中,第一个参数期望  第二个均值
x1=np.random.normal(0,0.8,1000)
x2=np.random.normal(-2,1,1000)
x3=np.random.normal(3,2,1000)
#参数分别是bins:装箱,alpha:透明度
kwargs=dict(bins=100,alpha=0.4)
plt.hist(x1,**kwargs)
plt.hist(x2,**kwargs)
plt.hist(x3,**kwargs)
plt.show()

运行结果图:
在这里插入图片描述

等高线图

【示例】使用pyplot绘制等高线图

#导入模块
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-10,10,100)
y=np.linspace(-10,10,100)
#计算x和y的相交点a
X,Y=np.meshgrid(x,y)
# 计算Z的坐标
Z=np.sqrt(X**2+Y**2)
plt.contourf(X,Y,Z)
plt.contour(X,Y,Z)
# 颜色越深表示值越小,中间的黑色表示z=0.
plt.show()

运行结果图:

在这里插入图片描述

绘制三维图

使用pyplot包和Matplotlib绘制三维图。
【示例】使用pyplot包和Matplotlib绘制三维图

import matplotlib.pyplot as plt
#导入3D包
from mpl_toolkits.mplot3d import Axes3D
#创建X、Y、Z坐标
X=[1,1,2,2]
Y=[3,4,4,3]
Z=[1,100,1,1]
fig = plt.figure()
# 创建了一个Axes3D的子图放到figure画布里面
ax = Axes3D(fig)
ax.plot_trisurf(X, Y, Z)
plt.show()

运行结果图:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/663696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 19 , 118

19 .删除链表倒数第n个节点 思路1&#xff1a; 我首先想到的就是使用两个loop来进行解决&#xff1a; 遍历所有节点&#xff0c;得到需要删除节点的位置。再遍历一边所有节点&#xff0c;找到需要删除节点进行删除。 解决方案1&#xff1a; class Solution {public ListNod…

代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合

仅做学习笔记&#xff0c;详细请访问代码随想录 ● 理论基础 ● 77. 组合 ● 理论基础 回溯法解决的问题 回溯法&#xff0c;一般可以解决如下几种问题&#xff1a; 组合问题&#xff1a;N个数里面按一定规则找出k个数的集合 切割问题&#xff1a;一个字符串按一定规则有几…

新增模型检验,指标自动评估模型效果|ModelWhale 版本更新

二月将至&#xff0c;ModelWhale 迎来开年首次版本更新&#xff0c;期待为大家带来更优质的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; 新增 模型检验&#xff08;团队版✓&#xff09;优化 模型评审测试&#xff08;团队版✓&#xf…

如何在Shopee平台上进行手机类目选品?

在Shopee平台上进行手机类目的选品是一个关键而复杂的任务。卖家需要经过一系列的策略和步骤&#xff0c;以确保选品的成功和销售业绩的提升。下面将介绍一些有效的策略&#xff0c;帮助卖家在Shopee平台上进行手机类目选品。 先给大家推荐一款shopee知虾数据运营工具知虾免费…

c#的反汇编对抗

文章目录 前记nim攻防基础FFI内存加载加解密、编码 后记C#类型转换表nim基础 前记 随便编写一个c#调用winapi并用vs生成dll,同时用csc生成exe using System; using System.Runtime.InteropServices; namespace coleak {class winfun{[DllImport("User32.dll")]publ…

【算法】约数之和(数论)

题目 给定 n 个正整数 ai&#xff0c;请你输出这些数的乘积的约数之和&#xff0c;答案对 1097 取模。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一个整数 ai。 输出格式 输出一个整数&#xff0c;表示所给正整数的乘积的约数之和&#xff0c;答案需…

3593 蓝桥杯 查找最大元素 简单

3593 蓝桥杯 查找最大元素 简单 // C风格解法1&#xff0c;通过率100%&#xff0c;多组数据处理样式//str "abcdefgfedcba" //abcdefg(max)fedcba//str "xxxxx" //x(max)x(max)x(max)x(max)x(max)#include<bits/stdc.h>const int N 1e2 10;char …

【每日一题】石子游戏 VI

文章目录 Tag题目来源解题思路方法一&#xff1a;贪心排序 写在最后 Tag 【贪心排序】【数组】【2024-02-02】 题目来源 1686. 石子游戏 VI 解题思路 方法一&#xff1a;贪心排序 思路 假设有两个石子 i 和 j&#xff0c;Alice 和 Bob 认为它们的价值分别为 a i a_i ai​…

Linux系统Shell脚本-----------正则表达式 文本三剑客之---------grep、 sed

一、正则表达式 1.前言 正则表达式(regular expression)描述了一种字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板&…

qt学习:qt项目移植多平台

目录 window linux 安装qt步骤 在linux编译可执行程序步骤 arm 要先移植交叉编译链才能在ubuntu里生成arm的qt可执行文件&#xff0c;下面是步骤 安装arm的qmake 在linux编译可执行程序步骤 进入官网下载qt&#xff0c;下载window&#xff0c;linux的安装包&#xff0c…

让Unity迭代器性能提升5倍

最近在研究Unity il2cpp的代码生成和编译优化&#xff0c;结合之前遇到过的一个优化案例&#xff0c;给大家讲讲在Unity中迭代器相关代码生成的底层原理&#xff0c;以及在写代码过程中需要注意的一些特殊情况。 案例 首先我们来看一个非常简单的案例&#xff0c;代码如下&am…

Linux实验记录:使用Apache服务部署静态网站

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 目录 前言&#xff1a; 备注&#xff1a; 正文&…

【C语言进阶篇】assert宏 使用详解

文章目录 一、assert简介 二、assert使用方法和规则 2.1 头文件 2.2 原型 2.3 功能 2.4 示例 2.5 assert的打开与关闭 三、注意事项 3.1 运行效率问题 3.2 assert只适用于调试版本 3.3 资源释放与清理 3.4 过度依赖 四、总结 个人主页&#xff1a; 倔强的石头的…

氢气传感器报警值:守护实验室安全的隐形卫士

随着科技的发展&#xff0c;我们的生活变得越来越便捷&#xff0c;但是与此同时&#xff0c;安全问题也日益凸显。其中&#xff0c;氢气作为一种清洁能源&#xff0c;被广泛应用于各个领域&#xff0c;但是如果不加以控制&#xff0c;氢气泄漏也可能带来严重的安全隐患。因此&a…

柔性电流探头方向判断有哪些方法?干货分享!

柔性电流探头方向判断的方法干货分享&#xff01;从理论到实践&#xff0c;助您成为专业人士&#xff01;干货收藏&#xff0c;快看起来吧&#xff01;      柔性电流探头方向判断一直是电力行业测试中的关键问题之一&#xff0c;确切地判断电流方向对于测试电力系统的稳定…

Docker部署xxl-job调度器并结合SpringBoot测试

文章目录 一、Docker部署1. 创建数据库2. 启动容器3. 访问4. 新建执行器 二、SpringBoot整合1. 模块注册到执行器2. 创建配置类3. 启动测试 三、任务发布-普通任务1. 编写任务代码2. 创建任务3. 启动任务 四、任务发布-分片任务1. 编写任务代码2. 启动多个实例3. 创建任务4. 启…

CTF特训(二):青少年CTF-MISC部分WP

FLAG&#xff1a;当觉得自己很菜的时候&#xff0c;就静下心来学习 专研方向:MISC&#xff0c;CTF 每日emo&#xff1a;听一千遍反方向的钟&#xff0c;我们能回到过去吗&#xff1f; CTF特训(二)&#xff1a;青少年CTF-MISC部分WP&#xff1a; 文章目录 CTF特训(二)&#xff1…

IDEA开发使用 thymeleaf 模板$表达式报红波浪线解决方案

系列文章目录 文章目录 系列文章目录后端存值前端取值thymeleaf 后端存值 RequestMapping("/testModelAndView")//使用ModelAndView时返回的方法类型必须是ModelAndViewpublic ModelAndView testModelAndView() {//创建ModelAndView对象ModelAndView mav new Model…

QT播放gstreamer命令(三)---使用QMediaPlayer

前文&#xff1a; 因为之前听说过&#xff0c;QMediaPlayer已经集成了gstreamer&#xff0c;但是并没有什么接口来例子来说明&#xff0c;根本看不出来有任何gstreamer的形式&#xff0c;于是在QT5助手里面搜了一下&#xff0c;发现确实有gstreamer的痕迹&#xff0c;但是例子写…

谷歌浏览器网站打不开,显示叹号

问题&#xff1a; 您与此网站之间建立的连接不安全请勿在此网站上输入任何敏感信息&#xff08;例如密码或信用卡信息&#xff09;&#xff0c;因为攻击者可能会盗取这些信息。 了解详情 解决方式&#xff1a; 网上有很多原因&#xff0c;亲测为DNS问题&#xff0c;设置&…