绘制余弦正弦图像,横轴坐标为(-π, π)
1、 基本图像绘制
import matplotlib.pyplot as plt
import numpy as np
def main():
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 从 -pi到pi,有256个点
c = np.cos(x)
s = np.sin(x)
plt.figure(1)
plt.plot(x, c) # 第一个参数是自变量,第二个参数是因变量
plt.plot(x, s)
plt.show()
if __name__ == "__main__":
main()
结果为:
2、属性变化
import matplotlib.pyplot as plt
import numpy as np
def main():
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 从 -pi到pi,有256个点
c = np.cos(x)
s = np.sin(x)
plt.figure(1)
# 第一个参数是自变量,第二个参数是因变量,线的颜色,线宽,线型,标签,透明度
plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="cos", alpha=0.5)
# r* 表示的是线型为*的红色线
plt.plot(x, s, "r*", label="sin")
plt.title("cos & sin") # 加标题
plt.show()
if __name__ == "__main__":
main()
结果为:
3、
import matplotlib.pyplot as plt
import numpy as np
def main():
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 从 -pi到pi,有256个点
c = np.cos(x)
s = np.sin(x)
plt.figure(1)
# 第一个参数是自变量,第二个参数是因变量,线的颜色,线宽,线型,标签,透明度
plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="cos", alpha=0.5)
# r* 表示的是线型为*的红色线
plt.plot(x, s, "r*", label="sin")
ax = plt.gca()
ax.spines["right"].set_color("none") # 隐藏右边框
ax.spines["top"].set_color("none") # 隐藏上边框
ax.spines["left"].set_position(("data", 0)) # 左边框位置放到中心去
ax.spines["bottom"].set_position(("data", 0)) # 底部边框位置放到中心去
plt.title("cos & sin") # 加标题
plt.show()
if __name__ == "__main__":
main()
结果为:
4、
import matplotlib.pyplot as plt
import numpy as np
def main():
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 从 -pi到pi,有256个点
c = np.cos(x)
s = np.sin(x)
plt.figure(1)
# 第一个参数是自变量,第二个参数是因变量,线的颜色,线宽,线型,标签,透明度
plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="cos", alpha=0.5)
# r* 表示的是线型为*的红色线
plt.plot(x, s, "r*", label="sin")
ax = plt.gca()
ax.spines["right"].set_color("none")
ax.spines["top"].set_color("none")
ax.spines["left"].set_position(("data", 0))
ax.spines["bottom"].set_position(("data", 0))
# 设置轴的显示
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks(np.linspace(-1, 1, 5, endpoint=True))
for label in ax.get_xticklabels() + ax.get_yticklabels(): # 设置大小
label.set_fontsize(16)
label.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2))
plt.legend(loc="upper left") # 小方框的位置
plt.grid() # 网格线
plt.title("cos & sin") # 加标题
plt.show()
if __name__ == "__main__":
main()
结果为:
5、 改变显示范围:
plt.axis([-1, 1, 0.5, 1]) # 指定横轴最小最大,纵轴最小最大
结果为:
6、在4的基础上,加入这一行来进行填充:
plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green", alpha=0.25)
其中,x指的是横轴。x<0.5,对应的cos函数是1,所以从1开始往上填充。x>0.5的时候,对应的是0,所以从0开始往上填充
效果为:
7、在6的基础上,加注释:
plt.plot([t, t], [0, np.cos(t)], "y", linewidth=3, linestyle="--") # 加条线
8、在7的基础上,加注释:
plt.annotate("cos(1)", xy=(t, np.cos(1)), xycoords="data", xytext=(+10, +30),
textcoords="offset points", arrowprops=dict(arrowstyle='->', connectionstyle='arc3, rad=0.2'))
# xy=(t, np.cos(1)) 要加入的点的位置, xytext=(+10, +30) 加入注释的偏移量, textcoords说明是在相对位置 connectionstyle箭头的弧度