pythongcf函數(shù) Pythongcd

Python 畫圖存儲(savefig)

你可以安裝python的第三方應(yīng)用?chartdirector,?如下面用python代碼生成多個曲線的png圖形,并可以自定義layout.

站在用戶的角度思考問題,與客戶深入溝通,找到黃島網(wǎng)站設(shè)計與黃島網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋黃島地區(qū)。

#!/usr/bin/python

from pychartdir import *

# The data for the line chart

data0 = [42, 49, 33, 38, 51, 46, 29, 41, 44, 57, 59, 52, 37, 34, 51, 56, 56, 60, 70,

76, 63, 67, 75, 64, 51]

data1 = [50, 55, 47, 34, 42, 49, 63, 62, 73, 59, 56, 50, 64, 60, 67, 67, 58, 59, 73,

77, 84, 82, 80, 84, 98]

data2 = [36, 28, 25, 33, 38, 20, 22, 30, 25, 33, 30, 24, 28, 15, 21, 26, 46, 42, 48,

45, 43, 52, 64, 60, 70]

# The labels for the line chart

labels = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",

"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"]

# Create an XYChart object of size 600 x 300 pixels, with a light blue (EEEEFF)

# background, black border, 1 pxiel 3D border effect and rounded corners

c = XYChart(600, 300, 0xeeeeff, 0x000000, 1)

c.setRoundedFrame()

# Set the plotarea at (55, 58) and of size 520 x 195 pixels, with white background.

# Turn on both horizontal and vertical grid lines with light grey color (0xcccccc)

c.setPlotArea(55, 58, 520, 195, 0xffffff, -1, -1, 0xcccccc, 0xcccccc)

# Add a legend box at (50, 30) (top of the chart) with horizontal layout. Use 9 pts

# Arial Bold font. Set the background and border color to Transparent.

c.addLegend(50, 30, 0, "arialbd.ttf", 9).setBackground(Transparent)

# Add a title box to the chart using 15 pts Times Bold Italic font, on a light blue

# (CCCCFF) background with glass effect. white (0xffffff) on a dark red (0x800000)

# background, with a 1 pixel 3D border.

c.addTitle("Application Server Throughput", "timesbi.ttf", 15).setBackground(

0xccccff, 0x000000, glassEffect())

# Add a title to the y axis

c.yAxis().setTitle("MBytes per hour")

# Set the labels on the x axis.

c.xAxis().setLabels(labels)

# Display 1 out of 3 labels on the x-axis.

c.xAxis().setLabelStep(3)

# Add a title to the x axis

c.xAxis().setTitle("Jun 12, 2006")

# Add a line layer to the chart

layer = c.addLineLayer2()

# Set the default line width to 2 pixels

layer.setLineWidth(2)

# Add the three data sets to the line layer. For demo purpose, we use a dash line

# color for the last line

layer.addDataSet(data0, 0xff0000, "Server #1")

layer.addDataSet(data1, 0x008800, "Server #2")

layer.addDataSet(data2, c.dashLineColor(0x3333ff, DashLine), "Server #3")

# Output the chart

c.makeChart("multiline.png")

求教python一個作圖的問題

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

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

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

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

本文目錄

1.?Matplotlib.pyplot快速繪圖

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

3.?Matplotlib.pylab快速繪圖

4.?在圖表中顯示中文

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

6.?對數(shù)坐標軸

7.?學習資源

Matplotlib.pyplot快速繪圖

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

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

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

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

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

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

配置屬性

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

因為matplotlib實際上是一套面向?qū)ο蟮睦L圖庫,因此也可以直接獲取對象的屬性

配置文件

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

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

繪制多子圖(快速繪圖)

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

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

subplot(numRows, numCols, plotNum)

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

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

繪制多圖表(快速繪圖)

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

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輸出圖象的中文顯示問題

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

面向?qū)ο螽媹D

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

直接使用Artists創(chuàng)建圖表的標準流程如下:

創(chuàng)建Figure對象

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

調(diào)用Axies等對象的方法創(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")

Matplotlib教程,Pyplot教程

pyplot是一個函數(shù)集合,能夠讓matplotlib像matlib一樣工作,每一個函數(shù)都會對一個figure做出一些改變,例如,創(chuàng)建一個figure,在一個figure里創(chuàng)建一個plotting area,在plotting area里畫一些線,在plot里加一些標簽等

在pyplot函數(shù)調(diào)用之間會保留著各種狀態(tài),比如當前figure和plotting area和當前的axes(這里的axes是指figure中axes部分,不是指數(shù)學上的axis的復數(shù))

pyplot API沒有面像對象API靈活,這里能看到的大部函數(shù)都是從一個Axes對象的方法,建議看文檔中的例子了解它是怎么工作的

用pyplot快速創(chuàng)建一張圖

為什么x軸是0-3,y軸是1-4,如果你給plot傳入一個數(shù)組,plot會假設(shè)是一個y值的序列,然后自動創(chuàng)建相應(yīng)的x值,因為python從0開始,默認的x向量與y同樣長度,則x為[0,1,2,3]

plot是一個萬能命令,它可以任意數(shù)里的參數(shù),例如,畫一個x-y二維圖像,可以這樣用命令

對于每個成對的x,y,還有一個可選的第三個參數(shù),用來指定畫線的顏色和類型,格式化的字母符號借鑒于matlab,你能把顏色符號與線類型連在一起,默認的格式化符號是'b-',就是藍色的實線,如果你想畫一個紅色圖點,可以

plot文檔里有所有的格式化參數(shù),例子中axis()使用一個list [xmin,xmax,ymin,ymax]來指定可見范圍

如果matplotlib只能用lists,那對于數(shù)字處理就沒什么用了.一般來講,你可以用numpy.array,實際上,所有序列都被內(nèi)部轉(zhuǎn)換成numpy.array,下面的例子用不同的形式畫了一些線

有一些實例,是通過字符串訪問變量里的數(shù)據(jù),例numpy.recarray,pandas.DataFrame

matplotlib可以讓你提供一些帶有關(guān)鍵字字典的對象,如果是這樣的對象,plot可以把字符串和變量關(guān)聯(lián)起來

也可以使用分類變量做圖,matlibplot有很多函數(shù)可以傳入分類變量

線有很多屬性,如線寬,樣式,反鋸齒,有很多方式設(shè)置線的屬性

獲取可設(shè)置屬性的列表,調(diào)用setp函數(shù)

Matlab和pyplot,有一個當前figure和當前axes的概念,所有的plot命令都會作用在當前axes上,函數(shù)gca()返回當前axes,gcf()返回當前figure

通常,你不用擔心這個,因為都在內(nèi)部處理了這些問題,下面是一個創(chuàng)建兩個subplot的腳本

這里的的figure()是可選的,因為默認情況自動創(chuàng)建了figure(1),還有如果你不指定任何subplot,會默認創(chuàng)建subplot(111),subplot指定行數(shù),列數(shù),plot序號,plot序號的范圍是1到行數(shù)乘以列數(shù).如果行列數(shù)相乘小于10,參數(shù)里的逗號是可選的,因為subplot(211)默認是指subplot(2,1,1)

你可以創(chuàng)建任何數(shù)量的subplot和axes,如果你想用axes()命令手動指定axes位置(例如不是一個矩形),你可以用axes([left,bottom,width,height]),這里所有數(shù)都是小數(shù)(0 to1)

可以多次用一個增長的數(shù)當參數(shù)調(diào)用figure()創(chuàng)建多個figures,當然,每個figure都包括多個subplot和axes

clf()可以清除當前figure,cla()可以清除當前axes,如果你覺得內(nèi)部狀態(tài)不好用,你可以用弱狀態(tài)的面向?qū)ο驛PI來代替它

如果你創(chuàng)建了多個figure,你需要注意一件事,figure是在調(diào)用close()的時候內(nèi)存才被釋放,刪除所有figure,或用窗口管理器關(guān)閉窗口是不行的,因為pyplot在close()調(diào)用之前會有很多內(nèi)部引用

text()命令可以在任何位置填加文本,xlabel,ylabel和title可以在指定的地方填加文本

所有的text()命令都會返回matplotlib.text.Text實例,和線段一樣,你可以在函數(shù)里或者setp里用關(guān)鍵字參數(shù)自定義屬性

matplotlib里文本里可以用Tex方程表達式,例如,你想寫sigma=15,你可以用Tex表達式,然后用$括起來

前面的r很重要,它意味著\是字符串,不要當成python轉(zhuǎn)義符,matplotlib有一個內(nèi)置的Tex解析器和布局引擎,和自己的數(shù)字字體,也就是說可以在跨平臺的時候不用安裝Tex,如果安裝了LaTex和dvipng,也可以用來做輸出

text()可以用在axes的任何位置,一個用法就是用來注釋,annotate()可以很容易的提供幫助功能,有兩個坐標點要考慮,xy和xytext,都是元組形式

matplotlib不僅提供線性坐標軸刻度,而且還提供對數(shù)和分對數(shù)刻度,這種刻度對跨度很大的數(shù)據(jù)很有用,改變刻度比例很簡單:

y軸不同刻度的例子

你也可以填加自己的刻度比例

python里面有哪些自帶函數(shù)?

python系統(tǒng)提供了下面常用的函數(shù):

1. 數(shù)學庫模塊(math)提供了很多數(shù)學運算函數(shù);

2.復數(shù)模塊(cmath)提供了用于復數(shù)運算的函數(shù);

3.隨機數(shù)模塊(random)提供了用來生成隨機數(shù)的函數(shù);

4.時間(time)和日歷(calendar)模塊提供了能處理日期和時間的函數(shù)。

注意:在調(diào)用系統(tǒng)函數(shù)之前,先要使用import 語句導入 相應(yīng)的模塊

該語句將模塊中定義的函數(shù)代碼復制到自己的程 序中,然后就可以訪問模塊中的任何函數(shù),其方 法是在函數(shù)名前面加上“模塊名.”。

希望能幫到你。

python繪圖篇

1,xlable,ylable設(shè)置x,y軸的標題文字。

2,title設(shè)置標題。

3,xlim,ylim設(shè)置x,y軸顯示范圍。

plt.show()顯示繪圖窗口,通常情況下,show()會阻礙程序運行,帶-wthread等參數(shù)的環(huán)境下,窗口不會關(guān)閉。

plt.saveFig()保存圖像。

面向?qū)ο罄L圖

1,當前圖表和子圖可以用gcf(),gca()獲得。

subplot()繪制包含多個圖表的子圖。

configure subplots,可調(diào)節(jié)子圖與圖表邊框距離。

可以通過修改配置文件更改對象屬性。

圖標顯示中文

1,在程序中直接指定字體。

2, 在程序開始修改配置字典reParams.

3,修改配置文件。

Artist對象

1,圖標的繪制領(lǐng)域。

2,如何在FigureCanvas對象上繪圖。

3,如何使用Renderer在FigureCanvas對象上繪圖。

FigureCanvas和Render處理底層圖像操作,Artist處理高層結(jié)構(gòu)。

分為簡單對象和容器對象,簡單的Aritist是標準的繪圖元件,例如Line 2D,Rectangle,Text,AxesImage等,而容器類型包含許多簡單的的 Aritist對象,使他們構(gòu)成一個整體,例如Axis,Axes,Figure等。

直接創(chuàng)建Artist對象進項繪圖操作步奏:

1,創(chuàng)建Figure對象(通過figure()函數(shù),會進行許多初始化操作,不建議直接創(chuàng)建。)

2,為Figure對象創(chuàng)建一個或多個Axes對象。

3,調(diào)用Axes對象的方法創(chuàng)建各類簡單的Artist對象。

Figure容器

如何找到指定的Artist對象。

1,可調(diào)用add_subplot()和add_axes()方法向圖表添加子圖。

2,可使用for循環(huán)添加柵格。

3,可通過transform修改坐標原點。

Axes容器

1,patch修改背景。

2,包含坐標軸,坐標網(wǎng)格,刻度標簽,坐標軸標題等內(nèi)容。

3,get_ticklabels(),,get-ticklines獲得刻度標簽和刻度線。

1,可對曲線進行插值。

2,fill_between()繪制交點。

3,坐標變換。

4,繪制陰影。

5,添加注釋。

1,繪制直方圖的函數(shù)是

2,箱線圖(Boxplot)也稱箱須圖(Box-whisker Plot),是利用數(shù)據(jù)中的五個統(tǒng)計量:最小值、第一四分位

數(shù)、中位數(shù)、第三四分位數(shù)與最大值來描述數(shù)據(jù)的一種方法,它可以粗略地看出數(shù)據(jù)是否具有對稱性以及分

布的分散程度等信息,特別可以用于對幾個樣本的比較。

3,餅圖就是把一個圓盤按所需表達變量的觀察數(shù)劃分為若干份,每一份的角度(即面積)等價于每個觀察

值的大小。

4,散點圖

5,QQ圖

低層繪圖函數(shù)

類似于barplot(),dotchart()和plot()這樣的函數(shù)采用低層的繪圖函數(shù)來畫線和點,來表達它們在頁面上放置的位置以及其他各種特征。

在這一節(jié)中,我們會描述一些低層的繪圖函數(shù),用戶也可以調(diào)用這些函數(shù)用于繪圖。首先我們先講一下R怎么描述一個頁面;然后我們講怎么在頁面上添加點,線和文字;最后講一下怎么修改一些基本的圖形。

繪圖區(qū)域與邊界

R在繪圖時,將顯示區(qū)域劃分為幾個部分。繪制區(qū)域顯示了根據(jù)數(shù)據(jù)描繪出來的圖像,在此區(qū)域內(nèi)R根據(jù)數(shù)據(jù)選擇一個坐標系,通過顯示出來的坐標軸可以看到R使用的坐標系。在繪制區(qū)域之外是邊沿區(qū),從底部開始按順時針方向分別用數(shù)字1到4表示。文字和標簽通常顯示在邊沿區(qū)域內(nèi),按照從內(nèi)到外的行數(shù)先后顯示。

添加對象

在繪制的圖像上還可以繼續(xù)添加若干對象,下面是幾個有用的函數(shù),以及對其功能的說明。

?points(x, y, ...),添加點

?lines(x, y, ...),添加線段

?text(x, y, labels, ...),添加文字

?abline(a, b, ...),添加直線y=a+bx

?abline(h=y, ...),添加水平線

?abline(v=x, ...),添加垂直線

?polygon(x, y, ...),添加一個閉合的多邊形

?segments(x0, y0, x1, y1, ...),畫線段

?arrows(x0, y0, x1, y1, ...),畫箭頭

?symbols(x, y, ...),添加各種符號

?legend(x, y, legend, ...),添加圖列說明

標題名稱:pythongcf函數(shù) Pythongcd
轉(zhuǎn)載來源:http://muchs.cn/article8/doccoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站制作、建站公司、App開發(fā)、網(wǎng)站內(nèi)鏈、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)