最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

01. 簡單繪圖

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

安裝

pip install matplotlib 

雖然matplotlib的默認設(shè)置在大多數(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. 設(shè)置基本元素

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

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

代碼比較簡單,基本上在我的第一講內(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)

# 設(shè)置線的顏色,粗細,和線型
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)

# 當前的刻度并不清晰,需要重新設(shè)定,并加上更直觀的標簽
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. 移動軸線

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

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

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

# plt.gca(),全稱是get current axis
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 由于我們移動的是左邊和底部的軸,所以不用設(shè)置這兩個也可以
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))

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

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

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 ,對箭頭的類型的一些設(shè)置。

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)

# 設(shè)置線的顏色,粗細,和線型
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)

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

# 由于我們移動的是左邊和底部的軸,所以不用設(shè)置這兩個也可以
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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)去除Excel重復(fù)數(shù)據(jù)并統(tǒng)計重復(fù)次數(shù)

    Python實現(xiàn)去除Excel重復(fù)數(shù)據(jù)并統(tǒng)計重復(fù)次數(shù)

    這篇文章主要為大家詳細介紹了如何利用Python語言實現(xiàn)文本數(shù)據(jù)去重,創(chuàng)建包含唯一值的新列,并統(tǒng)計文本數(shù)據(jù)出現(xiàn)的次數(shù),需要的可以參考下
    2023-08-08
  • Pyramid將models.py文件的內(nèi)容分布到多個文件的方法

    Pyramid將models.py文件的內(nèi)容分布到多個文件的方法

    默認的Pyramid代碼結(jié)構(gòu)中,就只有一個models.py文件,在實際項目中,如果需要對models進行分類,放到不同文件下,應(yīng)該怎么辦
    2013-11-11
  • Python3.6 之后字典是有序的?

    Python3.6 之后字典是有序的?

    字典數(shù)據(jù)是有序的, 但是這個序不是由外部控制, 而是內(nèi)部字典定位機制的序 所以對外來講, 數(shù)據(jù)本身是無序的 你每次遍歷的順序一樣, 是因為枚舉結(jié)果是按內(nèi)部排序輸出 而無序則表示在你無法從外部控制最終的輸出順序,下面我們來學(xué)習(xí)Python字典有序性的相關(guān)資料又當怎樣吧
    2021-12-12
  • Python字符串和正則表達式中的反斜杠(''\'')問題詳解

    Python字符串和正則表達式中的反斜杠(''\'')問題詳解

    在本篇文章里小編給大家整理的是關(guān)于Python字符串和正則表達式中的反斜杠('\')問題以及相關(guān)知識點,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Python設(shè)計密碼強度校驗程序

    Python設(shè)計密碼強度校驗程序

    這篇文章主要介紹了Python如何設(shè)計密碼強度校驗程序,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 如何將Yolov5的detect.py修改為可以直接調(diào)用的函數(shù)詳解

    如何將Yolov5的detect.py修改為可以直接調(diào)用的函數(shù)詳解

    YOLOv4還沒有退熱,YOLOv5已經(jīng)發(fā)布,下面這篇文章主要給大家介紹了關(guān)于如何將Yolov5的detect.py修改為可以直接調(diào)用的函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Python光學(xué)仿真wxpython透鏡演示系統(tǒng)初始化與參數(shù)調(diào)節(jié)

    Python光學(xué)仿真wxpython透鏡演示系統(tǒng)初始化與參數(shù)調(diào)節(jié)

    這篇文章主要為大家介紹了Python光學(xué)仿真wxpython透鏡演示系統(tǒng)的初始化與參數(shù)調(diào)節(jié),同樣在學(xué)習(xí)wxpython透鏡演示系統(tǒng)的入門同學(xué)可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python代碼使用 Pyftpdlib實現(xiàn)FTP服務(wù)器功能

    Python代碼使用 Pyftpdlib實現(xiàn)FTP服務(wù)器功能

    FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡單的方法即可實現(xiàn)FTP服務(wù)器的功能 ,需要的朋友可以參考下
    2019-07-07
  • 用Python寫一個自動木馬程序

    用Python寫一個自動木馬程序

    這篇文章主要介紹了用Python寫一個自動木馬程序的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • python語法?之與用戶交互和運算符

    python語法?之與用戶交互和運算符

    這篇文章主要介紹了python語法?之與用戶交互和運算符,用戶交互就是人往計算機中input/輸入數(shù)據(jù),計算機print/輸出結(jié)果,下文更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-04-04

最新評論

通化市| 滨州市| 太原市| 四子王旗| 通许县| 汤原县| 汕头市| 古蔺县| 石城县| 松滋市| 五河县| 射阳县| 天祝| 时尚| 永嘉县| 南平市| 英吉沙县| 宜君县| 怀来县| 连山| 黑龙江省| 澄城县| 石柱| 乐昌市| 双城市| 云浮市| 巴青县| 广南县| 翼城县| 白银市| 且末县| 汪清县| 教育| 太康县| 龙南县| 永登县| 大石桥市| 唐海县| 余江县| 竹山县| 进贤县|