当前位置: 首页 > news >正文

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 绘图实用大全

本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格&#xff0c;首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符&#xff0c;导致某些 unicode 字符不能…...

MyBatis源码用了哪些设计模式?

MyBatis源码用了哪些设计模式&#xff1f;前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中&#xff0c;使用了大量的设计模式对工程架…...

【16.整数转罗马数字】

罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...

前端小技巧

1.html 1.1 网站自动刷新 应用场景&#xff1a; 网页定期自动刷新&#xff08;现在基本淘汰了&#xff0c;采用ajax&#xff09;&#xff1b;自动跳转到指定页面&#xff0c;这个自动跳转的好处就是不需要JS调用&#xff0c;属于纯html网页自动跳转 v7-网站自动刷新 你可以…...

Servlet2.0

文章目录更方便的部署方式安装插件使用插件验证程序常见访问出错的解决方案404错误405错误500错误空白页面无法访问此网站在文章 TomcatServlet初识中&#xff0c;我们通过七个大的步骤才可以完成一个简单的Servlet程序&#xff0c;这个过程无疑是非常繁琐的&#xff0c;那么我…...

【c++】继承

目录 一、继承的表现 子类对父类成员的访问权限 二、父类与子类之间的相互赋值 三、继承的作用域 如果是父类和子类构成隐藏呢&#xff1f; 四、子类的成员函数怎么写 1.default构造函数 2.析构函数 所以析构函数不需要我们显式调用。 五、继承与友元函数 六、继承与静…...

minio安装配置和使用(二)客户端安装

安装minio客户端mcli 命令如下&#xff1a; dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20230128202938.0.0.x86_64.rpm 安装完成&#xff0c;在/usr/local/bin/下新增了mcli命令 mcli是对minio进行管理的命令。功能丰富&#xff0c; 基本格式…...

【如何使用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大模块&#xff0c;分别是注册页&#xff0c;登录页&#xff0c;编辑页&#xff0c;修改页&#xff0c;个人主页&#xf…...

【C习题】经典数组与指针面试题(万字)

文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明&#xff1a;需熟记以下三个规则。 规则1.&数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部&#xff0c;计算的是整个数组的大小。 说明&#xff1a;这里的单…...

【ArcGIS Pro二次开发】(13):ProWindow的用法

ProWindow是ArcGIS Pro SDK中的一个WPF控件&#xff0c;具有以下特点&#xff1a; 可扩展性&#xff1a;ProWindow提供了丰富的API和样式&#xff0c;可以轻松地扩展和自定义ArcGIS Pro应用程序的UI。 可定制性&#xff1a;ProWindow支持多种UI控件和布局方式&#xff0c;可以…...

HTML/CSS/JS 基本语法

前端一、HTNL1、文件结构2、文本标签&#xff08;1&#xff09;块元素&#xff1a;div&#xff08;2&#xff09;行内元素&#xff1a;span&#xff08;3&#xff09;格式标签3、图片、音频、视频&#xff08;1&#xff09;图片&#xff08;2&#xff09;音频< audio >&a…...

对于从事芯片行业的人来说,有哪些知识是需要储备的?

近两年芯片行业大火&#xff0c;不少同学想要转行&#xff0c;却不知道该如何下手&#xff0c;需要学习哪些基础知识&#xff0c;下面就来看看资深工程师怎么说&#xff1f; 随着工艺的发展&#xff0c;芯片肯定是尺寸越来越小&#xff0c;至于小到什么样的程度是极限&#xf…...

测试场景设计

测试场景设计 又叫做场景法。其实对于场景法是测试用例中面临最多的&#xff0c;但是这种模式不是很容易总结&#xff0c;有时候是基于经验&#xff0c;有时候是我们对系统的了解。所以在这种情况下&#xff0c;我们强硬的用场景法对其进行规范。 场景法原理 现在的软件几乎…...

《重构》增强代码可读性

文章目录重构原则何为重构为何重构何时重构重构会影响性能吗实例原始类进行重构分解statements方法提取函数搬移函数提炼“积分计算”功能去除临时变量&#xff08;以查询取代临时变量&#xff09;运用多态取代与价格相关的条件逻辑代码迁移Movie类Price类 状态模式搬移函数以多…...

数据分析自学路线

数据分析作为近几年火起来的IT技术岗位&#xff0c;在大数据时代的浪潮下迅速发酵膨胀&#xff0c;席卷了众多互联网企业&#xff0c;漫延到了金融、教育、医疗、消费等传统行业&#xff0c;在新经济领域也有重要作用&#xff0c;比如人工智能、新能源、电子芯片、企业数字化服…...

蓝桥杯C++组怒刷50道真题

&#x1f33c;深夜伤感网抑云 - 南辰Music/御小兮 - 单曲 - 网易云音乐 &#x1f33c;多年后再见你 - 乔洋/周林枫 - 单曲 - 网易云音乐 50题才停更&#xff0c;课业繁忙&#xff0c;有时间就更&#xff0c;2023/3/14/15:06写下 目录 &#x1f44a;填空题 &#x1f33c;一…...

【期末小作业】HTML、CSS前端静态网页

分享一个可以“趁别人喝咖啡的功夫“”写的一个静态网页&#xff0c;纯纯练手小项目&#xff0c;适合前端刚入门的小白练练手。 前端练手静态页面 实现效果图展示 CSS代码 HTML 代码 环境&#xff1a;VScode编辑器 语言&#xff1a;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】:条件语句和循环语句

本文已收录于专栏&#x1f33b;《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、实践——猜数…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...