Matplotlib 绘图实用大全
本文只介绍最简单基本的画图方法
预设
要想画出来的图有些逼格,首先应该进行如下设置
plt.rcParams['font.sans-serif']=['SimHei'] #画图时显示中文字体
plt.rcParams['axes.unicode_minus'] = False #防止因修改成中文字符,导致某些 unicode 字符不能显示
plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=0.3) #设置制子图之间的左右间距,left 等是设置画图区域与画布之间的间font1 = {'family' : 'SimHei',
'weight' : 'normal',
'size' : 15,
} #设置图例(legend)文字的格式的
绘制多幅图
基本格式:
fig = plt.figure(figsize=())
ax1 = plt.subplot(m,n,1) #m 为行、n为列、1 为图序
plt.plot(xxxxx)ax2 = plt.subplot(m,n,2)
plt.plot(xxxx)......
示例如下:
```python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = x+1fig = plt.figure(figsize=(12,4)) #宽度、高度
ax1 = plt.subplot(1,3,1)
plt.plot(x,y1,linewidth=1.5,color='c',label=r'$y_1$',marker='o',markersize=4)
plt.xlabel('x',fontsize=24)
plt.ylabel(r'$y_1$',fontsize=24)
plt.ylim([-1,1])
plt.xlim([0,2*np.pi])
plt.legend(prop=font1,loc='best')
plt.grid()ax2 = plt.subplot(1,3,2)
plt.plot(x,y2,linewidth=3,color='r',label=r'$y_2$',linestyle='-.')
plt.xlabel('x',fontsize=24)
plt.ylabel(r'$y_2$',fontsize=24)
plt.ylim([-1,1])
plt.xlim([0,2*np.pi])
plt.legend(prop=font1,loc='best')
plt.grid()ax3 = plt.subplot(1,3,3)
plt.plot(x,y3,linewidth=1.5,color='b',label=r'$y_3$',linestyle='--')
plt.xlabel('x',fontsize=24)
plt.ylabel(r'$y_3$',fontsize=24)
plt.legend(prop=font1,loc='best')
plt.grid()

另外。plt.title 也可以设图片的标题,子图的标题也行
画骨骼图
先看效果:

这里要用 axe 来画图,而不能直接用 plt,代码如下:
def sigmoid(x):return 1./(1.+np.exp(-x))def relu(x):return np.where(x<0,0,x)def tanh(x):return 2*sigmoid(2*x)-1font1 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size' : 14,
}def plot_tran_fun(): plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus'] = Falsefig = plt.figure(figsize=(8,6))ax1 = plt.subplot(2,2,1)x = np.arange(-10, 10)y = sigmoid(x)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data',0))ax.set_xticks([-10,-5,0,5,10])ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))ax.plot(x,y,label="Sigmoid",color = "blue")plt.legend(prop=font1,loc='lower right')
# plt.show()
#
# ax2 = plt.subplot(2,2,2)x = np.arange(-10, 10)y = tanh(x)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data',0))ax.set_xticks([-10,-5,0,5,10])ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))ax.plot(x,y,label="Tanh",color = "blue")plt.legend(prop=font1)
# ax.show()
# ax = fig.add_subplot(223)
# x = np.arange(-10, 10)y = relu(x)ax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data',0))ax.set_xticks([-10,-5,0,5,10])ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))ax.plot(x,y,label="ReLU",color = "blue")plt.legend(prop=font1)
# ax = fig.add_subplot(224)
# x = np.arange(-10, 10)y = xax.spines['top'].set_color('none')ax.spines['right'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data',0))ax.set_xticks([-10,-5,0,5,10])ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))ax.plot(x,y,label="Linear",color = "blue")plt.legend(prop=font1)plot_tran_fun()
其他画图
画出包围部分
一般用在画积分面积的时候,代码如下:
fig = plt.figure(figsize=(6,4))
plt.plot(x,y1,x,y2)
plt.fill_between(x,y1,y2,facecolor='k',alpha=0.2)
plt.text(1.5,0,'包围部分',fontsize=20)
plt.title('画出包围部分',fontsize=16)

散点图
plt.scatter(x,y,s=None,c=None,marker=None,alpha=None)
其中 s 为每一个点的大小,若传入的是一个列表或者 array,则array匹配每一个点的大小; c 表示点的颜色,若传入的是列表或者 array,则匹配每一个点的颜色
from sklearn.datasets import make_gaussian_quantiles
X, y = make_gaussian_quantiles(n_samples=300,n_features=2, n_classes=2) #产生数据集
X0 = X[y.ravel()==0]
plt.scatter(X0[:, 0], X0[:, 1], marker='o')
X1 = X[y.ravel()==1]
plt.scatter(X1[:, 0], X1[:, 1], marker='x')

柱状图
plt.bar(x,height,width,color)
其中 height 是柱状图的高度,即 y;
x = np.arange(10)
y1 = np.random.randn(10)
y2 = np.random.randn(10)
fig = plt.figure(figsize=(6,4))
plt.bar(x,y1,width=0.35,color='g')
plt.bar(x+0.35,y2,width=0.35,color='b')
plt.xlabel('x',fontsize=16)
plt.ylabel('y',fontsize=16)

饼状图
plt.pie(x,labels=None,explode=None,colors=None,autopct=None)
其中:x 为待表示数据;label 接受一个 array,分别对应 x 的标签,explode 接受 array,表示饼状图离圆心的距离(用半径的百分比表示);colors 可以接受 array,表示每一个饼的颜色,autopct 是设置比例的表示方法,如 %1.1f %%(第二个 % 是为了转意)
x = [15,20,30,40]
explode = [0.05]*len(x)
autopct = '%1.1f %%'
labels = ['one','two','three','four']
fig = plt.figure(figsize=(6,4))
patches,l_text,p_text = plt.pie(x,labels=labels,explode=explode,autopct=autopct)
#l_text,p_text 是为了设置饼状图的文本。l_text 是labels的文本,p_text 是图内部的文本(比例)
for t in l_text:t.set_size(30)
for t in p_text:t.set_size(20)

箱型图
plt.boxplot(df,sym,meanline)
df:为箱型图绘制的数据,以列为单位进行绘制
sym:为异常点的形状
meanline:是否展示平均线
import pandas as pd
df = pd.DataFrame(np.random.randn(5,4),columns=['A','B','C','D'])
fig = plt.figure(figsize=(6,4))
plt.boxplot(df,sym='o',meanline=True)

若要设置 xticks,则需要用到 ax,如下:
df = pd.DataFrame(np.random.randn(5,4),columns=['A','B','C','D'])
fig = plt.figure(figsize=(6,4))
ax = plt.subplot()ax.boxplot(df,sym='o')
ax.set_xticklabels(['A','B','C','D'])
频率直方图
import pandas as pd
x = np.random.normal(0,1,size=(100))
fig = plt.figure(figsize=(6,4))
bin_num = 10
plt.hist(x,bin_num)

相关文章:
Matplotlib 绘图实用大全
本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…...
MyBatis源码用了哪些设计模式?
MyBatis源码用了哪些设计模式?前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中,使用了大量的设计模式对工程架…...
【16.整数转罗马数字】
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...
前端小技巧
1.html 1.1 网站自动刷新 应用场景: 网页定期自动刷新(现在基本淘汰了,采用ajax);自动跳转到指定页面,这个自动跳转的好处就是不需要JS调用,属于纯html网页自动跳转 v7-网站自动刷新 你可以…...
Servlet2.0
文章目录更方便的部署方式安装插件使用插件验证程序常见访问出错的解决方案404错误405错误500错误空白页面无法访问此网站在文章 TomcatServlet初识中,我们通过七个大的步骤才可以完成一个简单的Servlet程序,这个过程无疑是非常繁琐的,那么我…...
【c++】继承
目录 一、继承的表现 子类对父类成员的访问权限 二、父类与子类之间的相互赋值 三、继承的作用域 如果是父类和子类构成隐藏呢? 四、子类的成员函数怎么写 1.default构造函数 2.析构函数 所以析构函数不需要我们显式调用。 五、继承与友元函数 六、继承与静…...
minio安装配置和使用(二)客户端安装
安装minio客户端mcli 命令如下: dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20230128202938.0.0.x86_64.rpm 安装完成,在/usr/local/bin/下新增了mcli命令 mcli是对minio进行管理的命令。功能丰富, 基本格式…...
【如何使用Arduino设置GRBL和控制CNC机床】
【如何使用Arduino设置GRBL和控制CNC机床】 前言1. 什么是GRBL?2. 所需硬件3. 如何安装GRBL4. GRBL 配置5. GRBL 控制器5.1 如何使用通用 G 代码发送器5.2 波特率5.3 电机方向5.4 步进比例系数5.5 限位开关5.6 数控机床的归位设置6. 结论前言 如果您正在考虑或正在制造自己的…...
项目测试——博客系统
文章目录项目测试——博客系统项目简介项目功能测试计划web自动化测试1. 测试用例2.web自动化测试说明项目测试——博客系统 项目简介 博客系统主要分为8大模块,分别是注册页,登录页,编辑页,修改页,个人主页…...
【C习题】经典数组与指针面试题(万字)
文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明:需熟记以下三个规则。 规则1.&数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部,计算的是整个数组的大小。 说明:这里的单…...
【ArcGIS Pro二次开发】(13):ProWindow的用法
ProWindow是ArcGIS Pro SDK中的一个WPF控件,具有以下特点: 可扩展性:ProWindow提供了丰富的API和样式,可以轻松地扩展和自定义ArcGIS Pro应用程序的UI。 可定制性:ProWindow支持多种UI控件和布局方式,可以…...
HTML/CSS/JS 基本语法
前端一、HTNL1、文件结构2、文本标签(1)块元素:div(2)行内元素:span(3)格式标签3、图片、音频、视频(1)图片(2)音频< audio >&a…...
对于从事芯片行业的人来说,有哪些知识是需要储备的?
近两年芯片行业大火,不少同学想要转行,却不知道该如何下手,需要学习哪些基础知识,下面就来看看资深工程师怎么说? 随着工艺的发展,芯片肯定是尺寸越来越小,至于小到什么样的程度是极限…...
测试场景设计
测试场景设计 又叫做场景法。其实对于场景法是测试用例中面临最多的,但是这种模式不是很容易总结,有时候是基于经验,有时候是我们对系统的了解。所以在这种情况下,我们强硬的用场景法对其进行规范。 场景法原理 现在的软件几乎…...
《重构》增强代码可读性
文章目录重构原则何为重构为何重构何时重构重构会影响性能吗实例原始类进行重构分解statements方法提取函数搬移函数提炼“积分计算”功能去除临时变量(以查询取代临时变量)运用多态取代与价格相关的条件逻辑代码迁移Movie类Price类 状态模式搬移函数以多…...
数据分析自学路线
数据分析作为近几年火起来的IT技术岗位,在大数据时代的浪潮下迅速发酵膨胀,席卷了众多互联网企业,漫延到了金融、教育、医疗、消费等传统行业,在新经济领域也有重要作用,比如人工智能、新能源、电子芯片、企业数字化服…...
蓝桥杯C++组怒刷50道真题
🌼深夜伤感网抑云 - 南辰Music/御小兮 - 单曲 - 网易云音乐 🌼多年后再见你 - 乔洋/周林枫 - 单曲 - 网易云音乐 50题才停更,课业繁忙,有时间就更,2023/3/14/15:06写下 目录 👊填空题 🌼一…...
【期末小作业】HTML、CSS前端静态网页
分享一个可以“趁别人喝咖啡的功夫“”写的一个静态网页,纯纯练手小项目,适合前端刚入门的小白练练手。 前端练手静态页面 实现效果图展示 CSS代码 HTML 代码 环境:VScode编辑器 语言:HTML 、CSS 一、实现效果图 仅仅通过…...
Windows逆向安全(一)之基础知识(二)
反汇编分析C语言 空函数反汇编 #include "stdafx.h"//空函数 void function(){}int main(int argc, char* argv[]) {//调用空函数function();return 0; }我们通过反汇编来分析这段空函数 函数外部 12: function(); 00401048 call ILT5(func…...
Python 基础教程【2】:条件语句和循环语句
本文已收录于专栏🌻《Python 基础》文章目录1、流程控制语句1.1 顺序语句1.2 条件语句1.2.1 if语句注意事项1.2.2 三元运算符1.2.3 自动类型转换1.3 循环语句1.3.1 while 循环1.3.2 for-in 循环1.3.3 for...else 循环1.3.4 break 和 continue 的区别2、实践——猜数…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
