亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python繪制正余弦函數(shù)圖像的方法

 更新時間:2018年08月28日 15:06:45   作者:Python編程時光  
這篇文章主要介紹了Python繪制正余弦函數(shù)圖像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

今天打算通過繪制正弦和余弦函數(shù),從默認的設置開始,一步一步地調(diào)整改進,讓它變得好看,變成我們初高中學習過的圖象那樣。通過這個過程來學習如何進行對圖表的一些元素的進行調(diào)整。

01. 簡單繪圖

matplotlib有一套允許定制各種屬性的默認設置。你可以幾乎控制matplotlib中的每一個默認屬性:圖像大小,每英寸點數(shù),線寬,色彩和樣式,子圖(axes),坐標軸和網(wǎng)格屬性,文字和字體屬性,等等。

安裝

pip install matplotlib 

雖然matplotlib的默認設置在大多數(shù)情況下相當好,你卻可能想要在一些特別的情形下更改一些屬性。

from pylab import *

x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)

plot(x,C)
plot(x,S)

show()

show image

02. 設置基本元素

這邊的基本元素主要有幾下幾點:

線的顏色,粗細,和線型 刻度和標簽 還有圖例

代碼比較簡單,基本上在我的第一講內(nèi)容里都講過了。

import numpy as np
from matplotlib import pyplot as plt

plt.figure(figsize=(10,6), dpi=80)
x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)

# 設置線的顏色,粗細,和線型
plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label=r'$sin(x)$')
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-", label=r'$cos(x)$')

# 如果覺得線條離邊界太近了,可以加大距離
plt.xlim(x.min()*1.2, x.max()*1.2)
plt.ylim(C.min()*1.2, C.max()*1.2)

# 當前的刻度并不清晰,需要重新設定,并加上更直觀的標簽
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([-1,0,1],
   [r'$-1$', r'$0$', r'$1$'])

# 添加圖例
plt.legend()

plt.show()

show image

03. 移動軸線

還記得我們在初高中學習的三角函數(shù)圖象,可不是這樣,它應該是有四個象限的。而這里卻是一個四四方方的圖表。

所以接下來,我們要做的就是移動軸線,讓它變成我們熟悉的樣子。

我們只需要兩軸線(x和y軸),所以我們需要將頂部和右邊的軸線給隱藏起來(顏色設置為None即可)。

# plt.gca(),全稱是get current axis
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')

# 指定data類型,就是移動到指定數(shù)值
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

關于 set_position() 這個函數(shù)中的data是啥意思?我查了下官網(wǎng)。解釋如下

然后最后發(fā)現(xiàn),上面的寫法可以用一定更簡潔的方式設置,是等價的。

ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')

show image

04. 添加注釋

現(xiàn)在的圖形部分已經(jīng)成型,接下讓我們現(xiàn)在使用annotate命令注解一些我們感興趣的點。

我們選擇 2π/3 作為我們想要注解的正弦和余弦值。我們將在曲線上做一個標記和一個垂直的虛線。然后,使用annotate命令來顯示一個箭頭和一些文本。

t = 2*np.pi/3

# 利用plt.plot繪制向下的一條垂直的線,利用plt.scatter繪制一個點。
plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
   xy=(t, np.sin(t)), xycoords='data',
   xytext=(+10, +30), textcoords='offset points', fontsize=16,
   arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# 利用plt.plot繪制向上的一條垂直的線,利用plt.scatter繪制一個點。
plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
   xy=(t, np.cos(t)), xycoords='data',
   xytext=(-90, -50), textcoords='offset points', fontsize=16,
   arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

在這里,你可能會對 plt.annotate 這個函數(shù)的用法,有所陌生。這里也解釋一下。

第一個參數(shù),就是注釋內(nèi)容; 第二個參數(shù), xy ,就是對哪一點進行注釋; 第三個參數(shù), xycoords ,指定類型,data 是說基于數(shù)值來定位; 第四個參數(shù), xytext ,是注釋的位置,結(jié)合第五個參數(shù),就是根據(jù)偏移量來決定注釋位置; 第五個參數(shù), textcoords ,值為offset points,就是說是相對位置; 第六個參數(shù), fontsize ,注釋大??; 第七個參數(shù), arrowprops ,對箭頭的類型的一些設置。

show image

05. 完整代碼

以上都是對片段代碼進行解釋,這里放出完整的代碼

import numpy as np
from matplotlib import pyplot as plt

plt.figure(figsize=(10,6), dpi=80)
x = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(x), np.sin(x)

# 設置線的顏色,粗細,和線型
plt.plot(x, C, color="blue", linewidth=2.5, linestyle="-", label=r'$sin(x)$')
plt.plot(x, S, color="red", linewidth=2.5, linestyle="-", label=r'$cos(x)$')

# 如果覺得線條離邊界太近了,可以加大距離
plt.xlim(x.min()*1.2, x.max()*1.2)
plt.ylim(C.min()*1.2, C.max()*1.2)

# 當前的刻度并不清晰,需要重新設定,并加上更直觀的標簽
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([-1,1],
   [r'$-1$', r'$1$'])

# 添加圖例
plt.legend(loc='upper left')

# plt.gca(),全稱是get current axis
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')

# 指定data類型,就是移動到指定數(shù)值
# ax.spines['bottom'].set_position('zero')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))

t = 2*np.pi/3

# 利用plt.plot繪制向下的一條垂直的線,利用plt.scatter繪制一個點。
plt.plot([t,t],[0,np.cos(t)], color ='blue', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
   xy=(t, np.sin(t)), xycoords='data',
   xytext=(+10, +30), textcoords='offset points', fontsize=16,
   arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

# 利用plt.plot繪制向上的一條垂直的線,利用plt.scatter繪制一個點。
plt.plot([t,t],[0,np.sin(t)], color ='red', linewidth=2.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
   xy=(t, np.cos(t)), xycoords='data',
   xytext=(-90, -50), textcoords='offset points', fontsize=16,
   arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.show()

繪制拋物線:

X1=np.linspace(-4,4,100,endpoint=True)
plt.plot(X1,(X1**2)/9)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟

    數(shù)據(jù)庫非常重要,程序的數(shù)據(jù)增刪改查需要數(shù)據(jù)庫支持,python處理數(shù)據(jù)庫非常簡單,而且不同類型的數(shù)據(jù)庫處理邏輯方式大同小異,下面這篇文章主要給大家介紹了關于Python使用sqlite3第三方庫讀寫SQLite數(shù)據(jù)庫的方法步驟,需要的朋友可以參考下
    2022-07-07
  • 詳解python如何優(yōu)雅地關閉線程

    詳解python如何優(yōu)雅地關閉線程

    這篇文章主要介紹了python如何優(yōu)雅地關閉線程,在并發(fā)編程中,我們可能會創(chuàng)建新線程,并在其中運行任務,可能由于一些原因,決定停止該線程,那么應該如何正確關閉線程呢?文中給了詳細的解決方法,需要的朋友可以參考下
    2024-03-03
  • 利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼

    利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼

    這篇文章主要介紹了利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能

    TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能

    這篇文章主要介紹了TensorFlow2.X結(jié)合OpenCV 實現(xiàn)手勢識別功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 5款實用的python 工具推薦

    5款實用的python 工具推薦

    工欲善其事必先利其器,一個好的工具能讓起到事半功倍的效果,Python 社區(qū)提供了足夠多的優(yōu)秀工具來幫助開發(fā)者更方便的實現(xiàn)某些想法,下面這幾個工具給我的工作也帶來了很多便利,推薦給追求美好事物的你。
    2020-10-10
  • Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str

    Python BeautifulSoup [解決方法] TypeError: list indices must be

    這篇文章主要介紹了Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Tensorflow分批量讀取數(shù)據(jù)教程

    Tensorflow分批量讀取數(shù)據(jù)教程

    今天小編就為大家分享一篇Tensorflow分批量讀取數(shù)據(jù)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django CBV模型源碼運行流程詳解

    Django CBV模型源碼運行流程詳解

    這篇文章主要介紹了Django CBV模型源碼運行流程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python3 用什么IDE開發(fā)工具比較好

    Python3 用什么IDE開發(fā)工具比較好

    這篇文章主要介紹了Python3 用什么IDE開發(fā)工具比較好,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • django傳值給模板, 再用JS接收并進行操作的實例

    django傳值給模板, 再用JS接收并進行操作的實例

    今天小編就為大家分享一篇django傳值給模板, 再用JS接收并進行操作的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論