当前位置: 首页 > 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、实践——猜数…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...