Matplotlib 綜合演練篇(正余弦函式)

2021-08-21 00:02:16 字數 3343 閱讀 7329

最終效果圖:

**展示:

import matplotlib.pyplot as plt

#from matplotlib import pyplot as plt

import numpy as np

from numpy import pi as pi

# 用於正常顯示中文標籤

plt.rcparams["font.sans-serif"]=['simhei']

# 用來正常顯示負號

plt.rcparams['axes.unicode_minus']=false

#linspace在(−π,π)之間分成共 256個小段,並把這256個值賦予x,從-pi到pi平均與256個點

x = np.linspace(-pi,pi,256,endpoint=true)

# 根據x的值求正弦和余弦函式

sin,cos = np.sin(x),np.cos(x)

#繪製正弦和余弦影象

plt.figure(figsize=(8,5))

#這裡`b-`是`color="blue",linestyle="-"`的簡寫形式

#`lw`=`linewidth`,兩種寫法都是合理的,但是`b-`這種形式明 顯更加簡潔

plt.plot(x,sin,"b-",lw=2.5,label="正弦")

plt.plot(x,cos,"r-",lw=2.5,label="余弦")

#將x和y軸同時拉伸1.5倍

plt.xlim(x.min()*1.5,x.max()*1.5)

plt.ylim(sin.min()*1.5,sin.max()*1.5)

#手動指定x軸和y軸的座標刻度

plt.xticks([-pi,-pi/2,0,pi/2,pi],[r'$-\pi$',r'$-\pi/2$',r'$0$',r'$\pi/2$',r'$\pi$'])

plt.yticks([-1,0,1])

#隱藏和平移座標軸

#獲取到axes物件

ax = plt.gca()

#隱藏右邊界和上邊界

ax.spines["right"].set_color("none")

ax.spines["top"].set_color("none")

#設定座標軸刻度顯示位置

#將x軸座標的刻度顯示到圖表的下方

ax.xaxis.set_ticks_position('bottom')

#將y軸座標的刻度顯示到圖表的左邊

ax.yaxis.set_ticks_position("left")

#把x軸底部移到y軸0處

#把y軸左邊移到x軸0處

ax.spines["bottom"].set_position(("data",0))

ax.spines["left"].set_position(("data",0))

#根據兩點繪製一條虛線

t = 2/3 *pi

plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")

plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")

#用繪製散點圖的方法在正弦和余弦影象上分別標註出乙個點[t,sin(t)] [t,cos(t)]

plt.scatter([t,],[np.sin(t)],s=50,color="b")

plt.scatter([t,],[np.cos(t)],s=50,color="r")

#給紅色的點新增注釋

plt.annotate(r'$\cos(\frac)=-\frac$',

xy=(t, np.cos(t)),

xycoords='data',

xytext=(-90, -50),

textcoords='offset points',

fontsize=16,

arrowprops=dict(arrowstyle="->",

connectionstyle="arc3,rad=.2"))

#給藍色的點新增注釋

plt.annotate(r'$\sin(\frac)=\frac}$',

xy=(t, np.sin(t)),

xycoords='data',

xytext=(+10, +30),

textcoords='offset points',

fontsize=16,

arrowprops=dict(arrowstyle="->",

connectionstyle="arc3,rad=.2"))

#獲取x軸和y軸的刻度,並設定字型

for label in ax.get_xticklabels()+ax.get_yticklabels():

label.set_fontsize(18)

#為每個刻度設定邊框,facecolor:刻度的背景顏色,edgecolor:邊框的顏色,alpha:背景的透明度

label.set_bbox(dict(facecolor='r',edgecolor='g',alpha=0.4))

# 顯示圖例

plt.legend(loc="upper left")

#顯示圖表

plt.show()

###這裡結果顯示最終與目標稍有不同是為了顯示label.set_bbox()函式的效果

圖表顯示結果:

總結:

1.利用np.linspace(-np.pi,np.pi,256,endpoint=true) 可以快速生產資料

2.通過plt.gca()獲得當前的axes物件ax

3.通過plt.xlim()方法來實現圖表的留白

4.通過plt.xticks()、plt.yticks() 來設定座標軸刻度

5.通過plt.annotate() 方法來為圖表新增注釋

6.for label in ax.get_xticklabels() + ax.get_yticklabels(): 方式來遍歷圖表中的label物件

Matplotlib 綜合演練

import matplotlib.pyplot as plt import numpy as np from numpy import pi 匯入numpy中的pi常量 用來正常顯示中文標籤 plt.rcparams font.sans serif simhei 用來正常顯示負號 plt.rcpa...

FPGA之綜合篇

1 綜合注意事項 綜合部分可以用setting進行所需要求來配置,比如fsm狀態機的碼型,rtl的綜合屬性。要進行網表層次重建可以設定 synth design flatten rebuild 基於專案的綜合可以直接按按鈕或者執行tcl指令 launch runs synth 1 基於非專案批作業的...

ESP8266開發綜合篇

為了解決基礎教程簡單入門但不實用,專案方案非常實用但比較難的問題,開始推出8266開發綜合篇 綜合篇涉及到at,lua,sdk,lua sdk 開發,lua和sdk開發會同步進行,後期再整理at指令的綜合開發 綜合篇的每一節都為實現某乙個特定的功能而做.如果沒有人來幫忙配文章的話,後期就只有自己來配...