Matplotlib绘制自定义函数曲线

函数原型

是reader读写器和tag之间传输信号强度和距离的一个关系衰减式子。
函数本身是一个一般复杂的函数,本身带有lg和^2这些计算。
给出原公式。
Matplotlib绘制自定义函数曲线_第1张图片

P_rx = Ae/ (4pi * r^2) * 10^-3
P_tx = 10 lg 1000 P_rx

Python实现

第一次自己写,我的函数很简单,基本上分为几步:
1)定义图的基本参数
2)定义函数
3)绘制图形
4)描点,标注


导入包:

import matplotlib.pyplot as plt
import numpy as np
import math

设置图的基本参数和线标示:

#设置大小
plt.figure(figsize=(10, 7), dpi=100)

# 线的标示在左上角,y为forward, Y为backward
plt.legend(loc="upper left")

坐标轴精确刻度:

# 设置横轴精准刻度
plt.xticks([-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8])
# 设置纵轴精准刻度
plt.yticks([-90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40])

写函数:

#前向曲线
X=np.linspace(0,3,30)
Y = 10 * np.log10(0.7 / X ** 2)
plt.plot(X, Y)

描点:
标出(3,-10)和(1,-1.5)这两个点并且附上label

#描点
plt.scatter([3], [-10], s=50, color="#800080")
plt.annotate("(3, -10)",
             xy=(3, -10),       
             fontsize=12,         
             xycoords='data')

plt.scatter([1], [-1.5], s=50, color="#800080")
plt.annotate("(1, -1.5)",
             xy=(1, -1.5),       
             fontsize=12,         
             xycoords='data')

线的参数设置:

# 绘制颜色为紫色、宽度为 1, 像素的不连续曲线 Y
plt.plot(X, Y, color="#800080", linewidth=1.0, linestyle="--", label="Backward")

绘制如下
Matplotlib绘制自定义函数曲线_第2张图片
完成。
基本上简单的函数可以通过这种方法表示出来。


完整代码如下:

import matplotlib.pyplot as plt
import numpy as np
import math

#设置大小
plt.figure(figsize=(10, 7), dpi=100)

# 设置横轴精准刻度
plt.xticks([-32, -16, -8, -4, -2, -1, 0, 1, 2, 4, 8])
# 设置纵轴精准刻度
plt.yticks([-90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40])

#前向曲线
X=np.linspace(0,3,30)
Y = 10 * np.log10(0.7 / X ** 2)
plt.plot(X, Y)

#描点
plt.scatter([3], [-10], s=50, color="#800080")
plt.annotate("(3, -10)",
             xy=(3, -10),       
             fontsize=12,         
             xycoords='data')

plt.scatter([1], [-1.5], s=50, color="#800080")
plt.annotate("(1, -1.5)",
             xy=(1, -1.5),       
             fontsize=12,         
             xycoords='data')

# 绘制颜色为紫色、宽度为 1, 像素的不连续曲线 Y
plt.plot(X, Y, color="#800080", linewidth=1.0, linestyle="--", label="Backward")
plt.legend(loc="upper left")

你可能感兴趣的:(Python)