动手学Matplotlib画图,Matplotlib 是一个非常强大的 Python 画图工具。【Matplotlib学习笔记】

news2024/12/24 8:10:22

一、第一章

1.基本用法

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y = 2*x + 1
plt.plot(x,y)
plt.show()

在这里插入图片描述

2.figure图像

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.figure()
#plt.figure(num= ,figsize(长,宽))
plt.plot(x,y2)
plt.show()

在这里插入图片描述

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
plt.show()

在这里插入图片描述

3.设置坐标轴1

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
#取值范围
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel("I am X")
plt.ylabel("I am Y")
new_ticks = np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.2,3],[r"$really\ bad$",r"$bad\ \alpha$",r"$normal$",r"$good$",r"$really\ good$"])
plt.show()

在这里插入图片描述

4.设置坐标轴2

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,1,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y2)
plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--')
#取值范围
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel("I am X")
plt.ylabel("I am Y")
new_ticks = np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.2,3],[r"$really\ bad$",r"$bad\ \alpha$",r"$normal$",r"$good$",r"$really\ good$"])
#gc = 'get current axis'
ax = plt.gca()
#设置框架(上下左右的线条)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()

在这里插入图片描述

5.legend图例

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1,3,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()

#取值范围
plt.xlim((-1,3))
plt.ylim((-2,3))
plt.xlabel("I am X")
plt.ylabel("I am Y")

new_ticks = np.linspace(-1,3,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,1.2,3],[r"$really\ bad$",r"$bad\ \alpha$",r"$normal$",r"$good$",r"$really\ good$"])

l1,=plt.plot(x,y2,label='up')
l2,=plt.plot(x,y1,color='red',linewidth=1.0,linestyle='--',label='down')
plt.legend(handles=[l1,l2],labels=['a','b'],loc='best')

plt.show()

在这里插入图片描述

6.Annotation标注

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y = 2*x + 1
plt.figure(num=1,figsize=(8,5))
plt.plot(x,y)


#gc = 'get current axis'
ax = plt.gca()
#设置框架(上下左右的线条)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

#添加点
x0 = 1
y0 = 2*x0 + 1
plt.scatter(x0,y0,s=50,color='b')
#添加虚线
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)
#Annotation,method1:
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
             fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
#Annotation,method2:
plt.text(-3.7,3,r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size':16,'color':'r'})

plt.show()

在这里插入图片描述

7.tick能见度

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-3,3,50)
y = 0.1 * x
plt.figure()
plt.plot(x,y,linewidth=10)
plt.ylim(-2,2)
#gc = 'get current axis'
ax = plt.gca()
#设置框架(上下左右的线条)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(12)
    label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))

plt.show()

在这里插入图片描述

二、第二章

1.散点图

import numpy as np
import matplotlib.pyplot as plt

n = 1024
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X) #设置颜色
plt.scatter(X,Y,c=T,s=75,alpha=0.5)
plt.xlim(-1.5,1.5)
plt.ylim(-1.5,1.5)
plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

2.柱状图

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)
Y1 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n)) * np.random.uniform(0.5,1.0,n)
#向上
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')
#向下
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')
#加数字
for x,y in zip(X,Y1):
    #ha:横向对齐方式;va:纵向对齐方式
    plt.text(x + 0.4,y+0.05,'%.2f'%y,ha='center',va='bottom')
for x,y in zip(X,Y2):
    #ha:横向对齐方式;va:纵向对齐方式
    plt.text(x + 0.4,-y-0.05,'-%.2f'%y,ha='center',va='top')
plt.xlim(-5,n)
plt.xticks(())
plt.ylim(-1.25,1.25)
plt.yticks(())
plt.show()

在这里插入图片描述

3.等高线图

import matplotlib.pyplot as plt
import numpy as np
def f(x,y):
    #计算高度的方法
    return (1 - x/2 + x**5 + y**3)*np.exp(-x**2-y**2)

n = 256
x = np.linspace(-3,3,n)
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y) #构建坐标网络
#创建轮廓图,alpha为轮廓透明度,cmap为轮廓颜色映射
plt.contour(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)
#画等高线
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5)
plt.clabel(C,inline = True,fontsize=10)
plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

4.Image图片

import matplotlib.pyplot as plt
import numpy as np
# 图片数据
a = np.array([0.313660827978, 0.365348418405, 0.423733120134,
              0.365348418405, 0.439599930621, 0.525083754405,
              0.423733120134, 0.525083754405, 0.651536351379]).reshape(3,3)
"""
for the value of "interpolation", check this:
http://matplotlib.org/examples/images_contours_and_fields/interpolation_methods.html
for the value of "origin"= ['upper', 'lower'], check this:
http://matplotlib.org/examples/pylab_examples/image_origin.html
"""
plt.imshow(a, interpolation='nearest', cmap='bone', origin='lower')
#颜色条
plt.colorbar(shrink=.92)
plt.xticks(())
plt.yticks(())
plt.show()

在这里插入图片描述

5.3D数据

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #导入3D包
fig = plt.figure() #窗口
#ax = Axes3D(fig) #显示不出来
ax = fig.add_axes(Axes3D(fig)) # 替代上行代码
# X, Y 数组
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)
#画在ax上,rstride、cstride跨度(行列),
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
# 等高线
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
#高度范围
ax.set_zlim(-2, 2)
plt.show()

在这里插入图片描述

三、第三章

1.Subplot多合一显示

import matplotlib.pyplot as plt
#练习1
plt.figure(figsize=(6, 4))
# 两行两列,第一张图
plt.subplot(2, 2, 1)
#x,y的坐标
plt.plot([0, 1], [0, 1])
# 两行两列,第二张图
plt.subplot(222)
plt.plot([0, 1], [0, 2])
# 两行两列,第三张图
plt.subplot(223)
plt.plot([0, 1], [0, 3])
# 两行两列,第四张图
plt.subplot(224)
plt.plot([0, 1], [0, 4])

plt.tight_layout()

# 练习2:
plt.figure(figsize=(6, 4))
# 两行,第一列的图占了3格
plt.subplot(2, 1, 1)
plt.plot([0, 1], [0, 1])
# 两行,第二列的第一个图
plt.subplot(234)
plt.plot([0, 1], [0, 2])
# 两行,第二列的第二个图
plt.subplot(235)
plt.plot([0, 1], [0, 3])
# 两行,第二列的第三个图
plt.subplot(236)
plt.plot([0, 1], [0, 4])


plt.tight_layout()
plt.show()

在这里插入图片描述在这里插入图片描述

2.Subplot分格显示

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

# 方法 1: subplot2grid
plt.figure()
#三行三列 从1行1列开始 ,跨度(列)是3
ax1 = plt.subplot2grid((3, 3), (0, 0), colspan=3)
ax1.plot([1, 2], [1, 2])
ax1.set_title('ax1_title')
#三行三列 从2行1列开始 ,跨度(列)是2
ax2 = plt.subplot2grid((3, 3), (1, 0), colspan=2)
#三行三列 从2行3列开始 ,跨度(行)是2
ax3 = plt.subplot2grid((3, 3), (1, 2), rowspan=2)
#三行三列 从3行1列开始
ax4 = plt.subplot2grid((3, 3), (2, 0))
ax4.scatter([1, 2], [2, 2])
ax4.set_xlabel('ax4_x')
ax4.set_ylabel('ax4_y')
#三行三列 从3行2列开始
ax5 = plt.subplot2grid((3, 3), (2, 1))

# 方法 2: gridspec
plt.figure()
gs = gridspec.GridSpec(3, 3)
#第1行占所有列
ax6 = plt.subplot(gs[0, :])
#第2行,占了前2列
ax7 = plt.subplot(gs[1, :2])
#从2行开始到最后的行,第三列
ax8 = plt.subplot(gs[1:, 2])
#最后一行第一列
ax9 = plt.subplot(gs[-1, 0])
#最后一行,后两列
ax10 = plt.subplot(gs[-1, -2])

# 方法 3: 共享X,Y轴
f, ((ax11, ax12), (ax13, ax14)) = plt.subplots(2, 2, sharex=True, sharey=True)
ax11.scatter([1,2], [1,2])

plt.tight_layout()
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.图中图

import matplotlib.pyplot as plt

fig = plt.figure()
x = [1, 2, 3, 4, 5, 6, 7]
y = [1, 3, 4, 2, 5, 8, 6]
#整个图的占比0.1=10%
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
#大图
ax1 = fig.add_axes([left, bottom, width, height])
ax1.plot(x, y, 'r')#红色
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('title')
#小图1
ax2 = fig.add_axes([0.2, 0.6, 0.25, 0.25])
ax2.plot(y, x, 'b')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('title inside 1')
#小图2
plt.axes([0.6, 0.2, 0.25, 0.25])
plt.plot(y[::-1], x, 'g')
plt.xlabel('x')
plt.ylabel('y')
plt.title('title inside 2')

plt.show()

在这里插入图片描述

4.次坐标轴

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()    # 颠倒
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.set_ylabel('Y2 data', color='b')
plt.show()

在这里插入图片描述

5.Animation动画

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
fig, ax = plt.subplots()
x = np.arange(0, 2*np.pi, 0.01)
line, = ax.plot(x, np.sin(x))

def animate(i):
    line.set_ydata(np.sin(x + i/10.0))
    return line,

def init():
    line.set_ydata(np.sin(x))
    return line,
ani = animation.FuncAnimation(fig=fig, func=animate, frames=100, init_func=init,
                              interval=20, blit=False)

plt.show()

在这里插入图片描述

注意:图片其实是一个动画

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

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

相关文章

6.ELK之Elasticsearch嵌套(Nested)类型

0、前言 在Elasticsearch实际应用中经常会遇到嵌套文档的情况,而且会有“对象数组彼此独立地进行索引和查询的诉求”。在ES中这种嵌套文档称为父子文档,父子文档“彼此独立地进行查询”至少有以下两种方式: 1)父子文档。在ES的5.…

基于人工蜂鸟算法的无人机航迹规划-附代码

基于人工蜂鸟算法的无人机航迹规划 文章目录 基于人工蜂鸟算法的无人机航迹规划1.人工蜂鸟搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用人工蜂鸟算法来优化无人机航迹规划。 …

【kubernetes】k8s组件

文章目录 1、概述2、控制平面组件(Control Plane Components)2.1 kube-apiserver2.2 etcd2.3 kube-scheduler2.4 kube-controller-manager2.5 cloud-controller-manager 3、Node组件3.1 kubelet3.2 kube-proxy3.3 容器运行时(Container Runti…

基础算法-回溯算法-案例

现象: 基础算法-回溯算法-案例 基础算法-回溯算法从不同角度出发 去寻找答案 找到答案或者走不通了(根据需求:找一个答案还是列举全部答案) 则回溯返回继续从下一条路出发 去寻找答案, 一直到走完 常见案例: 案例一: 通过输入一个不重复数…

找到【SVM】中最优的惩罚项系数C

因为本来SVM是想找到间隔最大的分割面,所以C越大,SVC会选择边际更小的,能够更好的分类所有训练点的决策边界,不过模型的训练时间也会越长。如果C的设定值较小,那SVC会尽量最大化边界,决策功能会更简单&…

4.求1000以内的所有完数

#include<stdio.h> // 完数&#xff1a;一个数的所有的真因子 (即除了自身以外的约数)的和&#xff0c;恰好等于它自身 // 1 不是完数 // 4的因子&#xff1a;1 2 4 除了本身 4 不等于 1&#xff0b;2 所以4不是完数void fun(void){int sum,i,j;for(i2;i<1000;i)…

架构师必备-DDD之落地实践

1. 走进 DDD 1.1 为什么要用 DDD &#xff1f; 面向对象设计&#xff0c;数据行为绑定&#xff0c;告别贫血模型&#xff1b;降低复杂度&#xff0c;分而治之&#xff1b;优先考虑领域模型&#xff0c;而不是切割数据和行为&#xff1b;准确传达业务规则&#xff0c;业务优先…

Unity中Shader再议ATTENUATION

文章目录 前言一、实现实时阴影的投射1、直接复制之前实现投射阴影的Pass 二、实现实时阴影的接受&#xff0c;同时实现光照衰减1、在 v2f 中使用这个2、在 顶点着色器 中使用这个3、在 片元着色器 中使用这个 前言 在之前文章中&#xff0c;实现了 Global Illumination 的直接…

python 之切片

文章目录 基本切片语法负索引step 为负使用负数的 Step从右向左提取间隔提取 注意事项切片的应用切片运用到字符串、元组、range对象字符串切片基本字符串切片使用步长进行操作 元组切片基本元组切片使用步长进行操作 range 对象切片基本 range 切片使用步长进行操作 在 Python…

SPSS两变量相关性分析

1.两变量相关性分析 两变量相关性分析是统计学中用于评估两个变量之间是否存在线性关系以及关系紧密程度的一种方法。相关性的大小通常使用相关系数来衡量&#xff0c;最常用的是皮尔逊相关系数&#xff08;Pearson correlation coefficient&#xff09;&#xff0c;但还有斯皮…

简单讲讲RISC-V跳转指令基于具体场景的实现

背景 在 RISC-V指令集中&#xff0c;一共有 6 条有条件跳转指令&#xff0c;分别是 beq、bne、blt、bltu、bge、bgeu。如下是它们的定义与接口 BEQ rs1, rs2, imm ≠ BNE rs1, rs2, imm &#xff1c; BLT rs1, rs2, imm ≥ BGE rs1, rs2, imm < unsigned BLTU rs1…

Stable Diffusion源码调试(二)

Stable Diffusion源码调试&#xff08;二&#xff09; 个人模型主页&#xff1a;https://liblib.ai/userpage/369b11c9952245e28ea8d107ed9c2746/model Stable Diffusion版本&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webui/releases/tag/v1.4.1 分析S…

汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

1 数据对象的创建 CtrlH打开Model Explorer&#xff0c;在Base workspace中点击工具栏add&#xff0c;出现如下界面&#xff0c; 可以看到Simulink提供了多种数据类型 Matlab Variable&#xff1a;Simulink.Parameter&#xff1a;使用该数据对象表示工程应用中的标定量Simuli…

python爬虫怎么翻页 ?

首先&#xff0c;你需要安装相关的库。在你的命令行窗口中&#xff0c;输入以下命令来安装所需的库&#xff1a; pip install requests beautifulsoup4然后&#xff0c;你可以使用以下代码来爬取网页内容并翻页&#xff1a; package mainimport ("fmt""net/htt…

DAY 12 结构体 共用体 枚举02

1.结构体 结构体对齐(了解) 概述 typedef struct Data01 { char a; int b; }Data01; typedef struct Data02 { char a; char b; }Data02; void fun01(){ printf("%ld\n",sizeof(Data01)); printf("%ld\n",sizeof(Data02)); } 特点&#xff…

QuantLib学习笔记——一个简单的价值估算案例

⭐️ 前言 QuantLib很强大&#xff0c;它实现了很多金融工具及其价值估算方法&#xff0c;从最简单的折现模型&#xff0c;到利用BSM模型对期权进行定价&#xff0c;覆盖面相当齐全。本文以一个简单的净现值估算案例&#xff0c;开启笔者金融工具估值的旅程。 开上豪车&#…

〔003〕虚幻 UE5 基础教程和蓝图入门

✨ 目录 &#x1f388; 新建项目&#x1f388; 快捷操作&#x1f388; 镜头移动速度&#x1f388; 新建蓝图关卡&#x1f388; 打印字符串&#x1f388; 蓝图的快捷键&#x1f388; 场景中放置物体&#x1f388; 通过蓝图改变物体位置&#x1f388; 展现物体运动轨迹&#x1f3…

泛微移动管理平台E-mobile lang2sql接口任意文件上传漏洞

一、漏洞描述 泛微e-mobile,由高端OA泛微专业研发,是业内领先的移动OA系统,提供移动审批,移动考勤,移动报表,企业微信等丰富办公应用,支持多种平台运行,灵活易用安全性高。 e-mobile可满足企业日常管理中的绝大部分管理需求&#xff0c; 诸如市场销售、项目、采购、研发、客服…

了解高防服务器的工作原理

在当今互联网时代&#xff0c;网络安全问题日益突出&#xff0c;各种网络攻击层出不穷。为了保护企业的网络安全&#xff0c;高防服务器应运而生。那么&#xff0c;你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…