matplotlib新建固定xy轴带网格空白画布(annotate使用、绘制激活函数)

news/2024/7/24 5:05:45 标签: python

目录

    • 1、新建画布
    • 2、 绘制符号
    • 3、sin函数
    • 4、sigmoid激活函数
    • 5、relu激活函数
    • 6、Tanh激活函数图像

1、新建画布

1、tm,新建固定xy轴带网格空白画布还困扰我挺久的,网上资源比较乱,该实现代码整理如下:

python">import glob
import random
import matplotlib.pyplot as plt

def plt_point(x,y):
  plt.xlim(0,3840) #x坐标轴范围-10~10
  plt.ylim(0,2160)
  #第一个参数为标记文本,第二个参数为标记对象的坐标,第三个参数为标记位置
  #plt.annotate('', xy=(2,2), xytext=(500,500))
  plt.grid()#网格线显示
  plt.savefig('point.jpg')
  plt.show()
plt_point(x,y)

效果:
在这里插入图片描述

2、 绘制符号

2、在固定坐标画点、画“#”符号

python">import matplotlib.pyplot as plt
#生成点(750,1450)
x = 750
y = 1450
plt.xlim(0, 3840)  # x坐标轴范围-10~10
plt.ylim(0, 2160)
#生成“#”
# 第一个参数为标记文本,第二个参数为标记对象的坐标,第三个参数为标记位置
plt.annotate('#', color="green",xy=(3, 3), xytext=(1000, 300))![在这里插入图片描述](https://img-blog.csdnimg.cn/ed2ea04832824b6e8cb6868826e78da1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lya6aOe55qE5riUV1pI,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center)

plt.scatter(x,y,s=100, c='r', marker='.', alpha=0.65)
plt.grid()  # 网格线显示
plt.savefig('point.jpg')

效果:
在这里插入图片描述

3、sin函数

3、画正弦函数(s = sin2pit,并用红色箭头标记(2.25,1)取最大值

python">import numpy as np
import matplotlib.pyplot as plt
 
fig, ax = plt.subplots()
 
# 绘制一个正弦曲线
t = np.arange(0.0, 5.0, 0.01)
s = np.sin(2*np.pi*t)
line, = ax.plot(t, s,color="green", lw=2)
 
# 绘制一个红色,两端缩进的箭头
ax.annotate('local max', xy=(2.25, 1), xytext=(3, 1.5),
            xycoords='data',
            arrowprops=dict(facecolor='red', shrink=0.05)
            )
#y轴坐标范围
ax.set_ylim(-3, 3)

结果:
在这里插入图片描述
annotate()用法参考博主:
添加链接描述

4、sigmoid激活函数

4、画固定函数(Sigmoid激活函数为例,并与3函数合并效果),并用特殊符号、字母标记
代码:

python">import math 
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-8,8)
a=np.array(x)
#---------Sigmoid-------------------
y1=1/(1+math.e**(-x))
#----------Deriv.Sigmoid------------------
y2=math.e**(-x)/((1+math.e**(-x))**2)
#---------sin函数t只取(0.5.0)---
t = np.arange(0.0, 5.0, 0.01)
#s = np.sin(2*np.pi*t)
s = np.sin(t)

plt.xlim(-9,9)
ax = plt.gca()                                            # get current axis 获得坐标轴对象
ax.spines['right'].set_color('none') 
ax.spines['top'].set_color('none')         # 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.xaxis.set_ticks_position('bottom')   
ax.yaxis.set_ticks_position('left')          # 指定下边的边作为 x 轴   指定左边的边为 y 轴
ax.spines['bottom'].set_position(('data', 0))   #指定 data  设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data', 0))
ax.annotate('local intersect', xy=(-2.5, 0.1), xytext=(-5.0, 0.6),
            xycoords='data',
            arrowprops=dict(facecolor='yellow', shrink=0.1)
            )
plt.plot(x,y1,label='Sigmoid',linestyle="-", color="blue")#label为标签
plt.plot(x,y2,label='Deriv.Sigmoid',linestyle="--", color="red")#l
ax.annotate('local max', xy=(1.57, 1), xytext=(2, 0.5),
            xycoords='data',
            arrowprops=dict(facecolor='red', shrink=0.05)
            )
plt.plot(t,s,label='sin',linestyle="--", color="green")#l
#plt.legend(loc=0,ncol=2)
plt.legend(['Sigmoid','Deriv.Sigmoid','sin'])

plt.savefig('plot_test.png', dpi=500) #指定分辨率


plt.show()

效果:
在这里插入图片描述

5、relu激活函数

5、relu激活函数

python">fig =  plt.figure(figsize=(6,4))
ax = fig.add_subplot(111)
x = np.arange(-10,10)
y = np.where(x<0,0,x) # 小于0输出0,大于0输出y
plt.xlim(-11,11)
plt.ylim(-11,11)

ax = plt.gca() # 获得当前axis坐标轴对象
ax.spines['right'].set_color('none') # 去除右边界线
ax.spines['top'].set_color('none') # 去除上边界线

ax.xaxis.set_ticks_position('bottom') # 指定下边的边作为x轴
ax.yaxis.set_ticks_position('left') # 指定左边的边为y轴

ax.spines['bottom'].set_position(('data',0)) # 指定data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['left'].set_position(('data',0))  # 指定y轴绑定到x轴的0这个点上
ax.annotate('local inflection point', xy=(0, 0), xytext=(-4, 5),
            xycoords='data',
            arrowprops=dict(facecolor='black', shrink=0.05),# 箭头线为黑色,两端缩进5%
            horizontalalignment='left',# 注释文本的左端和低端对齐到指定位置
            verticalalignment='bottom',

            )
plt.plot(x,y,label = 'ReLU',linestyle='-',color='darkviolet')
plt.legend(['ReLU'])
plt.savefig('relu.png')

plt.show()

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

6、Tanh激活函数图像

6、画Tanh激活函数图像

python">import numpy as np
import matplotlib.pyplot as plt
import math 
import numpy as np

#------绘制Tanh激活函数图像代码-------
x = np.arange(-10,10)
a = np.array(x)
y = (math.e**(x) - math.e**(-x)) / (math.e**(x) + math.e**(-x))

plt.xlim(-11,11)
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.plot(x,y,label='Tanh',linestyle='-',color='green')
plt.legend(['Tanh'])
plt.savefig('Tanh.png',dpi=500) # 指定分辨率
plt.show()

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


http://www.niftyadmin.cn/n/1726043.html

相关文章

python判断txt是否为空,并跳过空文件

问题&#xff1a;对批量txt文件做一些读写操作&#xff0c;一遇到为空的文件使得程序报错并终止&#xff0c;怎么判断一个txt文件内容是否为空&#xff0c;为空的话怎么跳过这些文件以继续下面的操作&#xff0c;并将为空的txt文件夹名称打印输出呢&#xff1f; 解决思路&#…

NOI模拟:保镖(Hall定理)

题意&#xff1a; 给一个二分图&#xff0c;找出满足以下条件的点集的个数&#xff1a; 1.该点集是原点集的子集。 2.该点集是一个匹配的点集的子集。 &#xff08;n ≤ 20&#xff09; 题解&#xff1a; 首先任意匹配的点集一定是一个最大匹配的子集。 题意转化为找出是…

批量更改图片名称、size大小

代码 import os import time from PIL import Imagedef alter(path,object):s os.listdir(path) #改尺寸像素大小代码段 """ count 1for i in s:document os.path.join(path,i)img Image.open(document)out img.resize((3840,2160))listStr [str(int(tim…

BZOJ3924: [Zjoi2015]幻想乡战略游戏(动态树分治)

传送门 题意&#xff1a; 给一棵树&#xff0c;每次给一些点增加点权&#xff0c;求一个点&#xff0c;使得∑j≠idis(i,j)∗val[j]最小,输出最小值。 题解&#xff1a;动态树分治 官方题解已经讲得很清楚了&#xff1a; 首先我们假设每次操作过后我们可以快速地在线查询以…

将图像按7:3划分train和val

问题&#xff1a;如何将原图按7:3划分train和val两个分类集呢&#xff1f; 代码&#xff1a; # -*- coding:utf-8 -*- #author :wu # 将一个文件夹下图片按比例分在两个文件夹下&#xff0c;比例改0.7这个值即可 import os import random import shutil from shutil import co…

BZOJ3676: [Apio2014]回文串(后缀自动机+manacher/回文自动机)

传送门 题意&#xff1a; 给一个字符串s。定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度。求出s的所有回文子串中的最 大出现值。 题解&#xff1a; manacher求出所有本质不同的回文子串后在后缀自动机上二分。 &#xff08;网上说的什么回文自动机感觉…

BZOJ1030: [JSOI2007]文本生成器(AC自动机)

传送门 题意&#xff1a; 给n个串&#xff0c;和字符串s的长度t。求满足包含至少一个串的字符串s的个数。 题解&#xff1a; 转化为求一个串都不满足的个数。可以直接在AC自动机上DP。 但注意比较坑的一点是如果一个串的子串中有不合法的子串的话也是不合法的。 #include…

dlib.get_frontal_face_detector()批量预测

问题&#xff1a;怎么使用dlib.get_frontal_face_detector()批量预测自己划分的验证数据集&#xff1f; 代码&#xff1a; #author&#xff1a;wu #导入需要的库 import cv2 import dlib import os import sys import random import numpy as np #------------没有该库则pip安…