最終效果圖:
**展示:
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指令的綜合開發 綜合篇的每一節都為實現某乙個特定的功能而做.如果沒有人來幫忙配文章的話,後期就只有自己來配...