真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python繪圖庫中函數(shù) python的畫圖函數(shù)

用Python畫圖

今天開始琢磨用Python畫圖,沒使用之前是一臉懵的,我使用的開發(fā)環(huán)境是Pycharm,這個(gè)輸出的是一行行命令,這個(gè)圖畫在哪里呢?

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的晉寧網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

搜索之后發(fā)現(xiàn),它會(huì)彈出一個(gè)對(duì)話框,然后就開始畫了,比如下圖

第一個(gè)常用的庫是Turtle,它是Python語言中一個(gè)很流行的繪制圖像的函數(shù)庫,這個(gè)詞的意思就是烏龜,你可以想象下一個(gè)小烏龜在一個(gè)x和y軸的平面坐標(biāo)系里,從原點(diǎn)開始根據(jù)指令控制,爬行出來就是繪制的圖形了。

它最常用的指令就是旋轉(zhuǎn)和移動(dòng),比如畫個(gè)圓,就是繞著圓心移動(dòng);再比如上圖這個(gè)怎么畫呢,其實(shí)主要就兩個(gè)命令:

turtle.forward(200)

turtle.left(170)

第一個(gè)命令是移動(dòng)200個(gè)單位并畫出來軌跡

第二個(gè)命令是畫筆順時(shí)針轉(zhuǎn)170度,注意此時(shí)并沒有移動(dòng),只是轉(zhuǎn)角度

然后呢? 循環(huán)重復(fù)就畫出來這個(gè)圖了

好玩吧。

有需要仔細(xì)研究的可以看下這篇文章 ,這個(gè)牛人最后用這個(gè)庫畫個(gè)移動(dòng)的鐘表,太贊了。

Turtle雖好玩,但是我想要的是我給定數(shù)據(jù),然后讓它畫圖,這里就找到另一個(gè)常用的畫圖的庫了。

Matplotlib是python最著名的繪圖庫,它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地行制圖。其中,matplotlib的pyplot模塊一般是最常用的,可以方便用戶快速繪制二維圖表。

使用起來也挺簡單,

首先import matplotlib.pyplot as plt?導(dǎo)入畫圖的圖。

然后給定x和y,用這個(gè)命令plt.plot(x, y)就能畫圖了,接著用plt.show()就可以把圖形展示出來。

接著就是各種完善,比如加標(biāo)題,設(shè)定x軸和y軸標(biāo)簽,范圍,顏色,網(wǎng)格等等,在 這篇文章里介紹的很詳細(xì)。

現(xiàn)在互聯(lián)網(wǎng)的好處就是你需要什么內(nèi)容,基本上都能搜索出來,而且還是免費(fèi)的。

我為什么要研究這個(gè)呢?當(dāng)然是為了用,比如我把比特幣的曲線自己畫出來可好?

假設(shè)現(xiàn)在有個(gè)數(shù)據(jù)csv文件,一列是日期,另一列是比特幣的價(jià)格,那用這個(gè)命令畫下:

這兩列數(shù)據(jù)讀到pandas中,日期為df['time']列,比特幣價(jià)格為df['ini'],那我只要使用如下命令

plt.plot(df['time'], df['ini'])

plt.show()

就能得到如下圖:

自己畫的是不是很香,哈哈!

然后呢,我在上篇文章 中介紹過求Ahr999指數(shù),那可不可以也放到這張圖中呢?不就是加一條命令嘛

plt.plot(df['time'], df['Ahr999'])

圖形如下:

但是,Ahr999指數(shù)怎么就一條線不動(dòng)啊,?原來兩個(gè)Y軸不一致,顯示出來太怪了,需要用多Y軸,問題來了。

繼續(xù)谷歌一下,把第二個(gè)Y軸放右邊就行了,不過呢得使用多圖,重新繪制

fig = plt.figure() # 多圖

ax1 = fig.add_subplot(111)

ax1.plot(df['time'], df['ini'], label="BTC price")? #?繪制第一個(gè)圖比特幣價(jià)格

ax1.set_ylabel('BTC price') #?加上標(biāo)簽

# 第二個(gè)直接對(duì)稱就行了

ax2 = ax1.twinx()#?在右邊增加一個(gè)Y軸

ax2.plot(df['time'], df['Ahr999'], 'r', label="ahr999")??#?繪制第二個(gè)圖Ahr999指數(shù),紅色

ax2.set_ylim([0, 50])# 設(shè)定第二個(gè)Y軸范圍

ax2.set_ylabel('ahr999')

plt.grid(color="k", linestyle=":")# 網(wǎng)格

fig.legend(loc="center")#圖例

plt.show()

跑起來看看效果,雖然丑了點(diǎn),但終于跑通了。

這樣就可以把所有指數(shù)都繪制到一張圖中,等等,三個(gè)甚至多個(gè)Y軸怎么加?這又是一個(gè)問題,留給愛思考愛學(xué)習(xí)的你。

有了自己的數(shù)據(jù),建立自己的各個(gè)指數(shù),然后再放到圖形界面中,同時(shí)針對(duì)異常情況再自動(dòng)進(jìn)行提醒,比如要抄底了,要賣出了,用程序做出自己的晴雨表。

Python之神奇的繪圖庫matplotlib

matplotlib是Python最著名的繪圖庫,它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。本文將以例子的形式分析matplot中支持的,分析中常用的幾種圖。其中包括填充圖、散點(diǎn)圖(scatter plots)、. 條形圖(bar plots)、等高線圖(contour plots)、 點(diǎn)陣圖和3D圖,下面來一起看看詳細(xì)的介紹:

一、填充圖

參考代碼

簡要分析

這里主要是用到了fill_between函數(shù)。這個(gè)函數(shù)很好理解,就是傳入x軸的數(shù)組和需要填充的兩個(gè)y軸數(shù)組;然后傳入填充的范圍,用where=來確定填充的區(qū)域;最后可以加上填充顏色啦,透明度之類修飾的參數(shù)。

相關(guān)推薦:《Python教程》

效果圖

二、散點(diǎn)圖(scatter plots)

參考代碼

簡要分析

1.首先介紹一下numpy 的normal函數(shù),很明顯,這是生成正態(tài)分布的函數(shù)。這個(gè)函數(shù)接受三個(gè)參數(shù),分別表示正態(tài)分布的平均值,標(biāo)準(zhǔn)差,還有就是生成數(shù)組的長度。很好記。

2.然后是arctan2函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù),分別表示y數(shù)組和x數(shù)組,然后返回對(duì)應(yīng)的arctan(y/x)的值,結(jié)果是弧度制。

3.接下來用到了繪制散點(diǎn)圖的scatter方法,首先當(dāng)然是傳入x和y數(shù)組,接著s參數(shù)表示scale,即散點(diǎn)的大??;c參數(shù)表示color,我給他傳的是根據(jù)角度劃分的一個(gè)數(shù)組,對(duì)應(yīng)的就是每一個(gè)點(diǎn)的顏色(雖然不知道是怎么對(duì)應(yīng)的,不過好像是一個(gè)根據(jù)數(shù)組內(nèi)其他元素進(jìn)行的相對(duì)的轉(zhuǎn)換,這里不重要了,反正相同的顏色賦一樣的值就好了);最后是alpha參數(shù),表示點(diǎn)的透明度。scatter函數(shù)的高級(jí)用法可以參見官方文檔scatter函數(shù)或者h(yuǎn)elp文檔,最后設(shè)置下坐標(biāo)范圍就好了。

效果圖

三、等高線圖(contour plots)

參考代碼

簡要分析

1.首先要明確等高線圖是一個(gè)三維立體圖,所以我們要建立一個(gè)二元函數(shù)f,值由兩個(gè)參數(shù)控制,(注意,這兩個(gè)參數(shù)都應(yīng)該是矩陣)。

2.然后我們需要用numpy的meshgrid函數(shù)生成一個(gè)三維網(wǎng)格,即,x軸由第一個(gè)參數(shù)指定,y軸由第二個(gè)參數(shù)指定。并返回兩個(gè)增維后的矩陣,今后就用這兩個(gè)矩陣來生成圖像。

3.接著就用到coutourf函數(shù)了,所謂contourf,大概就是contour fill的意思吧,只填充,不描邊;這個(gè)函數(shù)主要是接受三個(gè)參數(shù),分別是之前生成的x、y矩陣和函數(shù)值;接著是一個(gè)整數(shù),大概就是表示等高線的密度了,有默認(rèn)值;然后就是透明度和配色問題了,cmap的配色方案這里不多研究。

4.隨后就是contour函數(shù)了,很明顯,這個(gè)函數(shù)是用來描線的。用法可以類似的推出來,不解釋了,需要注意的是他返回一個(gè)對(duì)象,這個(gè)對(duì)象一般要保留下來個(gè)供后續(xù)的加工細(xì)化。

5.最后就是用clabel函數(shù)來在等高線圖上表示高度了,傳入之前的那個(gè)contour對(duì)象;然后是inline屬性,這個(gè)表示是否清除數(shù)字下面的那條線,為了美觀當(dāng)然是清除了,而且默認(rèn)的也是1;再就是指定線的寬度了。

效果圖

求教python一個(gè)作圖的問題

matplotlib 是python最著名的繪圖庫,它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應(yīng)用程序中。

它的文檔相當(dāng)完備,并且Gallery頁面中有上百幅縮略圖,打開之后都有源程序。因此如果你需要繪制某種類型的圖,只需要在這個(gè)頁面中瀏覽/復(fù)制/粘貼一下,基本上都能搞定。

在Linux下比較著名的數(shù)據(jù)圖工具還有g(shù)nuplot,這個(gè)是免費(fèi)的,Python有一個(gè)包可以調(diào)用gnuplot,但是語法比較不習(xí)慣,而且畫圖質(zhì)量不高。

而?Matplotlib則比較強(qiáng):Matlab的語法、python語言、latex的畫圖質(zhì)量(還可以使用內(nèi)嵌的latex引擎繪制的數(shù)學(xué)公式)。

本文目錄

1.?Matplotlib.pyplot快速繪圖

2.?面向?qū)ο螽媹D

3.?Matplotlib.pylab快速繪圖

4.?在圖表中顯示中文

5.?對(duì)LaTeX數(shù)學(xué)公式的支持

6.?對(duì)數(shù)坐標(biāo)軸

7.?學(xué)習(xí)資源

Matplotlib.pyplot快速繪圖

快速繪圖和面向?qū)ο蠓绞嚼L圖

matplotlib實(shí)際上是一套面向?qū)ο蟮睦L圖庫,它所繪制的圖表中的每個(gè)繪圖元素,例如線條Line2D、文字Text、刻度等在內(nèi)存中都有一個(gè)對(duì)象與之對(duì)應(yīng)。

為了方便快速繪圖matplotlib通過pyplot模塊提供了一套和MATLAB類似的繪圖API,將眾多繪圖對(duì)象所構(gòu)成的復(fù)雜結(jié)構(gòu)隱藏在這套API內(nèi)部。我們只需要調(diào)用pyplot模塊所提供的函數(shù)就可以實(shí)現(xiàn)快速繪圖以及設(shè)置圖表的各種細(xì)節(jié)。pyplot模塊雖然用法簡單,但不適合在較大的應(yīng)用程序中使用。

為了將面向?qū)ο蟮睦L圖庫包裝成只使用函數(shù)的調(diào)用接口,pyplot模塊的內(nèi)部保存了當(dāng)前圖表以及當(dāng)前子圖等信息。當(dāng)前的圖表和子圖可以使用plt.gcf()和plt.gca()獲得,分別表示"Get Current Figure"和"Get Current Axes"。在pyplot模塊中,許多函數(shù)都是對(duì)當(dāng)前的Figure或Axes對(duì)象進(jìn)行處理,比如說:

plt.plot()實(shí)際上會(huì)通過plt.gca()獲得當(dāng)前的Axes對(duì)象ax,然后再調(diào)用ax.plot()方法實(shí)現(xiàn)真正的繪圖。

可以在Ipython中輸入類似"plt.plot??"的命令查看pyplot模塊的函數(shù)是如何對(duì)各種繪圖對(duì)象進(jìn)行包裝的。

配置屬性

matplotlib所繪制的圖表的每個(gè)組成部分都和一個(gè)對(duì)象對(duì)應(yīng),我們可以通過調(diào)用這些對(duì)象的屬性設(shè)置方法set_*()或者pyplot模塊的屬性設(shè)置函數(shù)setp()設(shè)置它們的屬性值。

因?yàn)閙atplotlib實(shí)際上是一套面向?qū)ο蟮睦L圖庫,因此也可以直接獲取對(duì)象的屬性

配置文件

繪制一幅圖需要對(duì)許多對(duì)象的屬性進(jìn)行配置,例如顏色、字體、線型等等。我們在繪圖時(shí),并沒有逐一對(duì)這些屬性進(jìn)行配置,許多都直接采用了matplotlib的缺省配置。

matplotlib將這些缺省配置保存在一個(gè)名為“matplotlibrc”的配置文件中,通過修改配置文件,我們可以修改圖表的缺省樣式。配置文件的讀入可以使用rc_params(),它返回一個(gè)配置字典;在matplotlib模塊載入時(shí)會(huì)調(diào)用rc_params(),并把得到的配置字典保存到rcParams變量中;matplotlib將使用rcParams字典中的配置進(jìn)行繪圖;用戶可以直接修改此字典中的配置,所做的改變會(huì)反映到此后創(chuàng)建的繪圖元素。

繪制多子圖(快速繪圖)

Matplotlib 里的常用類的包含關(guān)系為?Figure - Axes - (Line2D, Text, etc.)一個(gè)Figure對(duì)象可以包含多個(gè)子圖(Axes),在matplotlib中用Axes對(duì)象表示一個(gè)繪圖區(qū)域,可以理解為子圖。

可以使用subplot()快速繪制包含多個(gè)子圖的圖表,它的調(diào)用形式如下:

subplot(numRows, numCols, plotNum)

subplot將整個(gè)繪圖區(qū)域等分為numRows行* numCols列個(gè)子區(qū)域,然后按照從左到右,從上到下的順序?qū)γ總€(gè)子區(qū)域進(jìn)行編號(hào),左上的子區(qū)域的編號(hào)為1。如果numRows,numCols和plotNum這三個(gè)數(shù)都小于10的話,可以把它們縮寫為一個(gè)整數(shù),例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的區(qū)域中創(chuàng)建一個(gè)軸對(duì)象。如果新創(chuàng)建的軸和之前創(chuàng)建的軸重疊的話,之前的軸將被刪除。

subplot()返回它所創(chuàng)建的Axes對(duì)象,我們可以將它用變量保存起來,然后用sca()交替讓它們成為當(dāng)前Axes對(duì)象,并調(diào)用plot()在其中繪圖。

繪制多圖表(快速繪圖)

如果需要同時(shí)繪制多幅圖表,可以給figure()傳遞一個(gè)整數(shù)參數(shù)指定Figure對(duì)象的序號(hào),如果序號(hào)所指定的Figure對(duì)象已經(jīng)存在,將不創(chuàng)建新的對(duì)象,而只是讓它成為當(dāng)前的Figure對(duì)象。

import numpy as np

import matplotlib.pyplot as plt

plt.figure(1) # 創(chuàng)建圖表1

plt.figure(2) # 創(chuàng)建圖表2

ax1 = plt.subplot(211) # 在圖表2中創(chuàng)建子圖1

ax2 = plt.subplot(212) # 在圖表2中創(chuàng)建子圖2

x = np.linspace(0, 3, 100)

for i in xrange(5):

plt.figure(1) ?#? # 選擇圖表1

plt.plot(x, np.exp(i*x/3))

plt.sca(ax1) ? #? # 選擇圖表2的子圖1

plt.plot(x, np.sin(i*x))

plt.sca(ax2) ?# 選擇圖表2的子圖2

plt.plot(x, np.cos(i*x))

plt.show()

在圖表中顯示中文

matplotlib的缺省配置文件中所使用的字體無法正確顯示中文。為了讓圖表能正確顯示中文,可以有幾種解決方案。

在程序中直接指定字體。

在程序開頭修改配置字典rcParams。

修改配置文件。

matplotlib輸出圖象的中文顯示問題

上面那個(gè)link里的修改matplotlibrc方式,我試了好幾次都沒成功。能work的一個(gè)比較簡便粗暴的方式(但不知道有沒有副作用)是,1.找到字體目錄YOURPYTHONHOME\Lib\site-packages\matplotlib\mpl-data\fonts\ttf下的Vera.ttf。這里我們用中文楷體(可以從windows/system32/fonts拷貝過來,對(duì)于win8字體文件不是ttf的可以從網(wǎng)上下一個(gè)微軟雅黑),直接張貼到前面的ttf目錄下,然后更名為Vera.ttf。2.?中文字符串用unicode格式,例如:u''測試中文顯示'',代碼文件編碼使用utf-8 加上" #?coding = utf-8 ?"一行。

面向?qū)ο螽媹D

matplotlib API包含有三層,Artist層處理所有的高層結(jié)構(gòu),例如處理圖表、文字和曲線等的繪制和布局。通常我們只和Artist打交道,而不需要關(guān)心底層的繪制細(xì)節(jié)。

直接使用Artists創(chuàng)建圖表的標(biāo)準(zhǔn)流程如下:

創(chuàng)建Figure對(duì)象

用Figure對(duì)象創(chuàng)建一個(gè)或者多個(gè)Axes或者Subplot對(duì)象

調(diào)用Axies等對(duì)象的方法創(chuàng)建各種簡單類型的Artists

import?matplotlib.pyplot as plt

X1 = range(0, 50)?Y1 = [num**2 for num in X1] # y = x^2?X2 = [0, 1]?Y2 = [0, 1] # y = x

Fig = plt.figure(figsize=(8,4)) # Create a `figure'?instance?Ax = Fig.add_subplot(111) # Create a `axes'?instance?in the figure?Ax.plot(X1, Y1, X2, Y2) # Create a Line2D?instance?in the axes

Fig.show()?Fig.savefig("test.pdf")


分享題目:python繪圖庫中函數(shù) python的畫圖函數(shù)
網(wǎng)頁鏈接:http://weahome.cn/article/higpdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部