PIL (Python Imaging Library)
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),澤普企業(yè)網(wǎng)站建設(shè),澤普品牌網(wǎng)站建設(shè),網(wǎng)站定制,澤普網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,澤普網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
Python圖像處理庫,該庫支持多種文件格式,提供強(qiáng)大的圖像處理功能。
PIL中最重要的類是Image類,該類在Image模塊中定義。
從文件加載圖像:
如果成功,這個(gè)函數(shù)返回一個(gè)Image對(duì)象?,F(xiàn)在你可以使用該對(duì)象的屬性來探索文件的內(nèi)容。
format 屬性指定了圖像文件的格式,如果圖像不是從文件中加載的則為 None 。
size 屬性是一個(gè)2個(gè)元素的元組,包含圖像寬度和高度(像素)。
mode 屬性定義了像素格式,常用的像素格式為:“L” (luminance) - 灰度圖, “RGB” , “CMYK”。
如果文件打開失敗, 將拋出IOError異常。
一旦你擁有一個(gè)Image類的實(shí)例,你就可以用該類定義的方法操作圖像。比如:顯示
( show() 的標(biāo)準(zhǔn)實(shí)現(xiàn)不是很有效率,因?yàn)樗鼘D像保存到一個(gè)臨時(shí)文件,然后調(diào)用外部工具(比如系統(tǒng)的默認(rèn)圖片查看軟件)顯示圖像。該函數(shù)將是一個(gè)非常方便的調(diào)試和測(cè)試工具。)
接下來的部分展示了該庫提供的不同功能。
PIL支持多種圖像格式。從磁盤中讀取文件,只需使用 Image 模塊中的 open 函數(shù)。不需要提供文件的圖像格式。PIL庫將根據(jù)文件內(nèi)容自動(dòng)檢測(cè)。
如果要保存到文件,使用 Image 模塊中的 save 函數(shù)。當(dāng)保存文件時(shí),文件名很重要,除非指定格式,否則PIL庫將根據(jù)文件的擴(kuò)展名來決定使用哪種格式保存。
** 轉(zhuǎn)換文件到JPEG **
save 函數(shù)的第二個(gè)參數(shù)可以指定使用的文件格式。如果文件名中使用了一個(gè)非標(biāo)準(zhǔn)的擴(kuò)展名,則必須通過第二個(gè)參數(shù)來指定文件格式。
** 創(chuàng)建JPEG縮略圖 **
需要注意的是,PIL只有在需要的時(shí)候才加載像素?cái)?shù)據(jù)。當(dāng)你打開一個(gè)文件時(shí),PIL只是讀取文件頭獲得文件格式、圖像模式、圖像大小等屬性,而像素?cái)?shù)據(jù)只有在需要的時(shí)候才會(huì)加載。
這意味著打開一個(gè)圖像文件是一個(gè)非常快的操作,不會(huì)受文件大小和壓縮算法類型的影響。
** 獲得圖像信息 **
Image 類提供了某些方法,可以操作圖像的子區(qū)域。提取圖像的某個(gè)子區(qū)域,使用 crop() 函數(shù)。
** 復(fù)制圖像的子區(qū)域 **
定義區(qū)域使用一個(gè)包含4個(gè)元素的元組,(left, upper, right, lower)。坐標(biāo)原點(diǎn)位于左上角。上面的例子提取的子區(qū)域包含300x300個(gè)像素。
該區(qū)域可以做接下來的處理然后再粘貼回去。
** 處理子區(qū)域然后粘貼回去 **
當(dāng)往回粘貼時(shí),區(qū)域的大小必須和參數(shù)匹配。另外區(qū)域不能超出圖像的邊界。然而原圖像和區(qū)域的顏色模式無需匹配。區(qū)域會(huì)自動(dòng)轉(zhuǎn)換。
** 滾動(dòng)圖像 **
paste() 函數(shù)有個(gè)可選參數(shù),接受一個(gè)掩碼圖像。掩碼中255表示指定位置為不透明,0表示粘貼的圖像完全透明,中間的值表示不同級(jí)別的透明度。
PIL允許分別操作多通道圖像的每個(gè)通道,比如RGB圖像。 split() 函數(shù)創(chuàng)建一個(gè)圖像集合,每個(gè)圖像包含一個(gè)通道。 merge() 函數(shù)接受一個(gè)顏色模式和一個(gè)圖像元組,然后將它們合并為一個(gè)新的圖像。接下來的例子交換了一個(gè)RGB圖像的三個(gè)通道。
** 分離和合并圖像通道 **
對(duì)于單通道圖像, split() 函數(shù)返回圖像本身。如果想處理各個(gè)顏色通道,你可能需要先將圖像轉(zhuǎn)為RGB模式。
resize() 函數(shù)接受一個(gè)元組,指定圖像的新大小。
rotate() 函數(shù)接受一個(gè)角度值,逆時(shí)針旋轉(zhuǎn)。
** 基本幾何變換 **
圖像旋轉(zhuǎn)90度也可以使用 transpose() 函數(shù)。 transpose() 函數(shù)也可以水平或垂直翻轉(zhuǎn)圖像。
** transpose **
transpose() 和 rotate() 函數(shù)在性能和結(jié)果上沒有區(qū)別。
更通用的圖像變換函數(shù)為 transform() 。
PIL可以轉(zhuǎn)換圖像的像素模式。
** 轉(zhuǎn)換顏色模式 **
PIL庫支持從其他模式轉(zhuǎn)為“L”或“RGB”模式,其他模式之間轉(zhuǎn)換,則需要使用一個(gè)中間圖像,通常是“RGB”圖像。
ImageFilter 模塊包含多個(gè)預(yù)定義的圖像增強(qiáng)過濾器用于 filter() 函數(shù)。
** 應(yīng)用過濾器 **
point() 函數(shù)用于操作圖像的像素值。該函數(shù)通常需要傳入一個(gè)函數(shù)對(duì)象,用于操作圖像的每個(gè)像素:
** 應(yīng)用點(diǎn)操作 **
使用以上技術(shù)可以快速地對(duì)圖像像素應(yīng)用任何簡(jiǎn)單的表達(dá)式??梢越Y(jié)合 point() 函數(shù)和 paste 函數(shù)修改圖像。
** 處理圖像的各個(gè)通道 **
注意用于創(chuàng)建掩碼圖像的語法:
Python計(jì)算邏輯表達(dá)式采用短路方式,即:如果and運(yùn)算符左側(cè)為false,就不再計(jì)算and右側(cè)的表達(dá)式,而且返回結(jié)果是表達(dá)式的結(jié)果。比如 a and b 如果a為false則返回a,如果a為true則返回b,詳見Python語法。
對(duì)于更多高級(jí)的圖像增強(qiáng)功能,可以使用 ImageEnhance 模塊中的類。
可以調(diào)整圖像對(duì)比度、亮度、色彩平衡、銳度等。
** 增強(qiáng)圖像 **
PIL庫包含對(duì)圖像序列(動(dòng)畫格式)的基本支持。支持的序列格式包括 FLI/FLC 、 GIF 和一些實(shí)驗(yàn)性的格式。 TIFF 文件也可以包含多個(gè)幀。
當(dāng)打開一個(gè)序列文件時(shí),PIL庫自動(dòng)加載第一幀。你可以使用 seek() 函數(shù) tell() 函數(shù)在不同幀之間移動(dòng)。
** 讀取序列 **
如例子中展示的,當(dāng)序列到達(dá)結(jié)尾時(shí),將拋出EOFError異常。
注意當(dāng)前版本的庫中多數(shù)底層驅(qū)動(dòng)只允許seek到下一幀。如果想回到前面的幀,只能重新打開圖像。
以下迭代器類允許在for語句中循環(huán)遍歷序列:
** 一個(gè)序列迭代器類 **
PIL庫包含一些函數(shù)用于將圖像、文本打印到Postscript打印機(jī)。以下是一個(gè)簡(jiǎn)單的例子。
** 打印到Postscript **
如前所述,可以使用 open() 函數(shù)打開圖像文件,通常傳入一個(gè)文件名作為參數(shù):
如果打開成功,返回一個(gè)Image對(duì)象,否則拋出IOError異常。
也可以使用一個(gè)file-like object代替文件名(暫可以理解為文件句柄)。該對(duì)象必須實(shí)現(xiàn)read,seek,tell函數(shù),必須以二進(jìn)制模式打開。
** 從文件句柄打開圖像 **
如果從字符串?dāng)?shù)據(jù)中讀取圖像,使用StringIO類:
** 從字符串中讀取 **
如果圖像文件內(nèi)嵌在一個(gè)大文件里,比如 tar 文件中。可以使用ContainerIO或TarIO模塊來訪問。
** 從tar文檔中讀取 **
** 該小節(jié)不太理解,請(qǐng)參考原文 **
有些解碼器允許當(dāng)讀取文件時(shí)操作圖像。通常用于在創(chuàng)建縮略圖時(shí)加速解碼(當(dāng)速度比質(zhì)量重要時(shí))和輸出一個(gè)灰度圖到激光打印機(jī)時(shí)。
draft() 函數(shù)。
** Reading in draft mode **
輸出類似以下內(nèi)容:
注意結(jié)果圖像可能不會(huì)和請(qǐng)求的模式和大小匹配。如果要確保圖像不大于指定的大小,請(qǐng)使用 thumbnail 函數(shù)。
Python2.7 教程 PIL
Python 之 使用 PIL 庫做圖像處理
來自
今天開始琢磨用Python畫圖,沒使用之前是一臉懵的,我使用的開發(fā)環(huán)境是Pycharm,這個(gè)輸出的是一行行命令,這個(gè)圖畫在哪里呢?
搜索之后發(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模塊一般是最常用的,可以方便用戶快速繪制二維圖表。
使用起來也挺簡(jiǎn)單,
首先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)行提醒,比如要抄底了,要賣出了,用程序做出自己的晴雨表。
有
當(dāng)然有,這就是Python函數(shù)圖像工具(EXE)。 本程序運(yùn)用Python中最令人喜愛的數(shù)據(jù)處理工具numpy和超強(qiáng)的圖像庫matplotlib,實(shí)現(xiàn)13種不同類別函數(shù)的分類圖像整理,展示圖像均可以保存為圖片的形式,具備拖動(dòng)、放大等功能
Python圖像處理是一種簡(jiǎn)單易學(xué),功能強(qiáng)大的解釋型編程語言,它有簡(jiǎn)潔明了的語法,高效率的高層數(shù)據(jù)結(jié)構(gòu),能夠簡(jiǎn)單而有效地實(shí)現(xiàn)面向?qū)ο缶幊蹋挛倪M(jìn)行對(duì)Python圖像處理進(jìn)行說明。
當(dāng)然,首先要感謝“戀花蝶”,是他的文章“用Python圖像處理 ” 幫我堅(jiān)定了用Python和PIL解決問題的想法,對(duì)于PIL的一些介紹和基本操作,可以看看這篇文章。我這里主要是介紹點(diǎn)我在使用過程中的經(jīng)驗(yàn)。
PIL可以對(duì)圖像的顏色進(jìn)行轉(zhuǎn)換,并支持諸如24位彩色、8位灰度圖和二值圖等模式,簡(jiǎn)單的轉(zhuǎn)換可以通過Image.convert(mode)函數(shù)完 成,其中mode表示輸出的顏色模式。例如''L''表示灰度,''1''表示二值圖模式等。
但是利用convert函數(shù)將灰度圖轉(zhuǎn)換為二值圖時(shí),是采用固定的閾 值127來實(shí)現(xiàn)的,即灰度高于127的像素值為1,而灰度低于127的像素值為0。為了能夠通過自定義的閾值實(shí)現(xiàn)灰度圖到二值圖的轉(zhuǎn)換,就要用到 Image.point函數(shù)。
深度剖析Python語法功能
深度說明Python應(yīng)用程序特點(diǎn)
對(duì)Python數(shù)據(jù)庫進(jìn)行學(xué)習(xí)研究
Python開發(fā)人員對(duì)Python經(jīng)驗(yàn)之談
對(duì)Python動(dòng)態(tài)類型語言解析
Image.point函數(shù)有多種形式,這里只討論Image.point(table, mode),利用該函數(shù)可以通過查表的方式實(shí)現(xiàn)像素顏色的模式轉(zhuǎn)換。其中table為顏色轉(zhuǎn)換過程中的映射表,每個(gè)顏色通道應(yīng)當(dāng)有256個(gè)元素,而 mode表示所輸出的顏色模式,同樣的,''L''表示灰度,''1''表示二值圖模式。
可見,轉(zhuǎn)換過程的關(guān)鍵在于設(shè)計(jì)映射表,如果只是需要一個(gè)簡(jiǎn)單的箝位值,可以將table中高于或低于箝位值的元素分別設(shè)為1與0。當(dāng)然,由于這里的table并沒有什么特殊要求,所以可以通過對(duì)元素的特殊設(shè)定實(shí)現(xiàn)(0, 255)范圍內(nèi),任意需要的一對(duì)一映射關(guān)系。
示例代碼如下:
import Image # load a color image im = Image.open(''fun.jpg'') # convert to grey level image Lim = im.convert(''L'') Lim.save(''fun_Level.jpg'') # setup a converting table with constant threshold threshold = 80 table = [] for i in range(256): if i threshold: table.append(0) else: table.append(1) # convert to binary image by the table bim = Lim.point(table, ''1'') bim.save(''fun_binary.jpg'')
IT部分通常要完成的任務(wù)相當(dāng)繁重但支撐這些工作的資源卻很少,這已經(jīng)成為公開的秘密。任何承諾提高編碼效率、降低軟件總成本的IT解決方案都應(yīng)該進(jìn)行 周到的考慮。Python圖像處理所具有的一個(gè)顯著優(yōu)勢(shì)就是可以在企業(yè)的軟件創(chuàng)建和維護(hù)階段節(jié)約大量資金,而這兩個(gè)階段的軟件成本占到了軟件整個(gè)生命周期中總成本 的50%到95%。
Python清晰可讀的語法使得軟件代碼具有異乎尋常的易讀性,甚至對(duì)那些不是最初接觸和開發(fā)原始項(xiàng)目的程序員都 能具有這樣的強(qiáng)烈感覺。雖然某些程序員反對(duì)在Python代碼中大量使用空格。
不過,幾乎人人都承認(rèn)Python圖像處理的可讀性遠(yuǎn)勝于C或者Java,后兩 者都采用了專門的字符標(biāo)記代碼塊結(jié)構(gòu)、循環(huán)、函數(shù)以及其他編程結(jié)構(gòu)的開始和結(jié)束。提倡Python的人還宣稱,采用這些字符可能會(huì)產(chǎn)生顯著的編程風(fēng)格差 異,使得那些負(fù)責(zé)維護(hù)代碼的人遭遇代碼可讀性方面的困難。轉(zhuǎn)載
生成一張純色的圖片
先設(shè)置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設(shè)置成rgba,類似的還有rgb,L(灰度圖等),尺寸設(shè)定為640,480,這個(gè)可以根據(jù)自己的情況設(shè)定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個(gè)顏色列表,把要生成的圖片顏色放進(jìn)去。接著循環(huán)獲取不同的顏色,保存的時(shí)候利用字符串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數(shù)
前面的方法已經(jīng)可以批量生成圖片了,為了通用性強(qiáng)一點(diǎn),我們可以封裝成函數(shù),把哪些可以改變的參數(shù)單獨(dú)抽離出來。尺寸也同樣,使用的時(shí)候,可以根據(jù)自己的需要定義顏色列表和尺寸。當(dāng)然還有加一些提示用語和報(bào)錯(cuò)兼容性,這里就不講了。
本地生成的圖片
1,xlable,ylable設(shè)置x,y軸的標(biāo)題文字。
2,title設(shè)置標(biāo)題。
3,xlim,ylim設(shè)置x,y軸顯示范圍。
plt.show()顯示繪圖窗口,通常情況下,show()會(huì)阻礙程序運(yùn)行,帶-wthread等參數(shù)的環(huán)境下,窗口不會(huì)關(guān)閉。
plt.saveFig()保存圖像。
面向?qū)ο罄L圖
1,當(dāng)前圖表和子圖可以用gcf(),gca()獲得。
subplot()繪制包含多個(gè)圖表的子圖。
configure subplots,可調(diào)節(jié)子圖與圖表邊框距離。
可以通過修改配置文件更改對(duì)象屬性。
圖標(biāo)顯示中文
1,在程序中直接指定字體。
2, 在程序開始修改配置字典reParams.
3,修改配置文件。
Artist對(duì)象
1,圖標(biāo)的繪制領(lǐng)域。
2,如何在FigureCanvas對(duì)象上繪圖。
3,如何使用Renderer在FigureCanvas對(duì)象上繪圖。
FigureCanvas和Render處理底層圖像操作,Artist處理高層結(jié)構(gòu)。
分為簡(jiǎn)單對(duì)象和容器對(duì)象,簡(jiǎn)單的Aritist是標(biāo)準(zhǔn)的繪圖元件,例如Line 2D,Rectangle,Text,AxesImage等,而容器類型包含許多簡(jiǎn)單的的 Aritist對(duì)象,使他們構(gòu)成一個(gè)整體,例如Axis,Axes,Figure等。
直接創(chuàng)建Artist對(duì)象進(jìn)項(xiàng)繪圖操作步奏:
1,創(chuàng)建Figure對(duì)象(通過figure()函數(shù),會(huì)進(jìn)行許多初始化操作,不建議直接創(chuàng)建。)
2,為Figure對(duì)象創(chuàng)建一個(gè)或多個(gè)Axes對(duì)象。
3,調(diào)用Axes對(duì)象的方法創(chuàng)建各類簡(jiǎn)單的Artist對(duì)象。
Figure容器
如何找到指定的Artist對(duì)象。
1,可調(diào)用add_subplot()和add_axes()方法向圖表添加子圖。
2,可使用for循環(huán)添加?xùn)鸥瘛?/p>
3,可通過transform修改坐標(biāo)原點(diǎn)。
Axes容器
1,patch修改背景。
2,包含坐標(biāo)軸,坐標(biāo)網(wǎng)格,刻度標(biāo)簽,坐標(biāo)軸標(biāo)題等內(nèi)容。
3,get_ticklabels(),,get-ticklines獲得刻度標(biāo)簽和刻度線。
1,可對(duì)曲線進(jìn)行插值。
2,fill_between()繪制交點(diǎn)。
3,坐標(biāo)變換。
4,繪制陰影。
5,添加注釋。
1,繪制直方圖的函數(shù)是
2,箱線圖(Boxplot)也稱箱須圖(Box-whisker Plot),是利用數(shù)據(jù)中的五個(gè)統(tǒng)計(jì)量:最小值、第一四分位
數(shù)、中位數(shù)、第三四分位數(shù)與最大值來描述數(shù)據(jù)的一種方法,它可以粗略地看出數(shù)據(jù)是否具有對(duì)稱性以及分
布的分散程度等信息,特別可以用于對(duì)幾個(gè)樣本的比較。
3,餅圖就是把一個(gè)圓盤按所需表達(dá)變量的觀察數(shù)劃分為若干份,每一份的角度(即面積)等價(jià)于每個(gè)觀察
值的大小。
4,散點(diǎn)圖
5,QQ圖
低層繪圖函數(shù)
類似于barplot(),dotchart()和plot()這樣的函數(shù)采用低層的繪圖函數(shù)來畫線和點(diǎn),來表達(dá)它們?cè)陧撁嫔戏胖玫奈恢靡约捌渌鞣N特征。
在這一節(jié)中,我們會(huì)描述一些低層的繪圖函數(shù),用戶也可以調(diào)用這些函數(shù)用于繪圖。首先我們先講一下R怎么描述一個(gè)頁面;然后我們講怎么在頁面上添加點(diǎn),線和文字;最后講一下怎么修改一些基本的圖形。
繪圖區(qū)域與邊界
R在繪圖時(shí),將顯示區(qū)域劃分為幾個(gè)部分。繪制區(qū)域顯示了根據(jù)數(shù)據(jù)描繪出來的圖像,在此區(qū)域內(nèi)R根據(jù)數(shù)據(jù)選擇一個(gè)坐標(biāo)系,通過顯示出來的坐標(biāo)軸可以看到R使用的坐標(biāo)系。在繪制區(qū)域之外是邊沿區(qū),從底部開始按順時(shí)針方向分別用數(shù)字1到4表示。文字和標(biāo)簽通常顯示在邊沿區(qū)域內(nèi),按照從內(nèi)到外的行數(shù)先后顯示。
添加對(duì)象
在繪制的圖像上還可以繼續(xù)添加若干對(duì)象,下面是幾個(gè)有用的函數(shù),以及對(duì)其功能的說明。
?points(x, y, ...),添加點(diǎn)
?lines(x, y, ...),添加線段
?text(x, y, labels, ...),添加文字
?abline(a, b, ...),添加直線y=a+bx
?abline(h=y, ...),添加水平線
?abline(v=x, ...),添加垂直線
?polygon(x, y, ...),添加一個(gè)閉合的多邊形
?segments(x0, y0, x1, y1, ...),畫線段
?arrows(x0, y0, x1, y1, ...),畫箭頭
?symbols(x, y, ...),添加各種符號(hào)
?legend(x, y, legend, ...),添加圖列說明