import matplotlib.pyplot as plt
青原網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),青原網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為青原成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的青原做網(wǎng)站的公司定做!
x_values=list(range(11))? ?#x軸的數(shù)字是0到10這11個整數(shù)
y_values=[x**2forx inx_values]? ?#y軸的數(shù)字是x軸數(shù)字的平方
plt.plot(x_values,y_values,c='green')??#用plot函數(shù)繪制折線圖,線條顏色設(shè)置為綠色
plt.title('Squares',fontsize=24)? ?#設(shè)置圖表標題和標題字號
plt.tick_params(axis='both',which='major',labelsize=14)?#設(shè)置刻度的字號
plt.xlabel('Numbers',fontsize=14)??#設(shè)置x軸標簽及其字號
plt.ylabel('Squares',fontsize=14)??#設(shè)置y軸標簽及其字號
plt.show()
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
#從pyplot導入MultipleLocator類,這個類用于設(shè)置刻度間隔
x_values=list(range(11))
y_values=[x**2forx inx_values]
plt.plot(x_values,y_values,c='green')
plt.title('Squares',fontsize=24)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.xlabel('Numbers',fontsize=14)
plt.ylabel('Squares',fontsize=14)
x_major_locator=MultipleLocator(1)?#把x軸的刻度間隔設(shè)置為1,并存在變量里
y_major_locator=MultipleLocator(10)?#把y軸的刻度間隔設(shè)置為10,并存在變量里
ax=plt.gca()?#ax為兩條坐標軸的實例
ax.xaxis.set_major_locator(x_major_locator)?#把x軸的主刻度設(shè)置為1的倍數(shù)
ax.yaxis.set_major_locator(y_major_locator)?#把y軸的主刻度設(shè)置為10的倍數(shù)
plt.xlim(-0.5,11)??#把x軸的刻度范圍設(shè)置為-0.5到11,因為0.5不滿一個刻度間隔,所以數(shù)字不會顯示出來,但是能看到一點空白
plt.ylim(-5,110)?#把y軸的刻度范圍設(shè)置為-5到110,同理,-5不會標出來,但是能看到一點空白
plt.show()
轉(zhuǎn)自 跳轉(zhuǎn)鏈接
一、用默認設(shè)置繪制折線圖
import matplotlib.pyplot as plt
x_values=list(range(11))
#x軸的數(shù)字是0到10這11個整數(shù)
y_values=[x**2 for x in x_values]
#y軸的數(shù)字是x軸數(shù)字的平方
plt.plot(x_values,y_values,c='green')
#用plot函數(shù)繪制折線圖,線條顏色設(shè)置為綠色
plt.title('Squares',fontsize=24)
#設(shè)置圖表標題和標題字號
plt.tick_params(axis='both',which='major',labelsize=14)
#設(shè)置刻度的字號
plt.xlabel('Numbers',fontsize=14)
#設(shè)置x軸標簽及其字號
plt.ylabel('Squares',fontsize=14)
#設(shè)置y軸標簽及其字號
plt.show()
#顯示圖表
制作出圖表
我們希望x軸的刻度是0,1,2,3,4……,y軸的刻度是0,10,20,30……,并且希望兩個坐標軸的范圍都能再大一點,所以我們需要手動設(shè)置。
二、手動設(shè)置坐標軸刻度間隔以及刻度范圍
import matplotlib.pyplot as plt
from matplotlib.pyplot import MultipleLocator
#從pyplot導入MultipleLocator類,這個類用于設(shè)置刻度間隔
x_values=list(range(11))
y_values=[x**2 for x in x_values]
plt.plot(x_values,y_values,c='green')
plt.title('Squares',fontsize=24)
plt.tick_params(axis='both',which='major',labelsize=14)
plt.xlabel('Numbers',fontsize=14)
plt.ylabel('Squares',fontsize=14)
x_major_locator=MultipleLocator(1)
#把x軸的刻度間隔設(shè)置為1,并存在變量里
y_major_locator=MultipleLocator(10)
#把y軸的刻度間隔設(shè)置為10,并存在變量里
ax=plt.gca()
#ax為兩條坐標軸的實例
ax.xaxis.set_major_locator(x_major_locator)
#把x軸的主刻度設(shè)置為1的倍數(shù)
ax.yaxis.set_major_locator(y_major_locator)
#把y軸的主刻度設(shè)置為10的倍數(shù)
plt.xlim(-0.5,11)
#把x軸的刻度范圍設(shè)置為-0.5到11,因為0.5不滿一個刻度間隔,所以數(shù)字不會顯示出來,但是能看到一點空白
plt.ylim(-5,110)
#把y軸的刻度范圍設(shè)置為-5到110,同理,-5不會標出來,但是能看到一點空白
plt.show()
繪制結(jié)果
作者:邁克爾·貝耶勒(Michael Beyeler)
如需轉(zhuǎn)載請聯(lián)系華章 科技
如果已安裝Anaconda Python版本,就已經(jīng)安裝好了可以使用的 Matplotlib。否則,可能要訪問官網(wǎng)并從中獲取安裝說明:
正如使用np作為 NumPy 的縮寫,我們將使用一些標準的縮寫來表示 Matplotlib 的引入:
在本書中,plt接口會被頻繁使用。
讓我們創(chuàng)建第一個繪圖。
假設(shè)想要畫出正弦函數(shù)sin(x)的線性圖。得到函數(shù)在x坐標軸上0≤x<10內(nèi)所有點的值。我們將使用 NumPy 中的 linspace 函數(shù)來在x坐標軸上創(chuàng)建一個從0到10的線性空間,以及100個采樣點:
可以使用 NumPy 中的sin函數(shù)得到所有x點的值,并通過調(diào)用plt中的plot函數(shù)把結(jié)果畫出來:
你親自嘗試了嗎?發(fā)生了什么嗎?有沒有什么東西出現(xiàn)?
實際情況是,取決于你在哪里運行腳本,可能無法看到任何東西。有下面幾種可能性:
1. 從.py腳本中繪圖
如果從一個腳本中運行 Matplotlib,需要加上下面的這行調(diào)用:
在腳本末尾調(diào)用這個函數(shù),你的繪圖就會出現(xiàn)!
2. 從 IPython shell 中繪圖
這實際上是交互式地執(zhí)行Matplotlib最方便的方式。為了讓繪圖出現(xiàn),需要在啟動 IPython 后使用所謂的%matplotlib魔法命令。
接下來,無須每次調(diào)用plt.show()函數(shù),所有的繪圖將會自動出現(xiàn)。
3. 從 Jupyter Notebook 中繪圖
如果你是從基于瀏覽器的 Jupyter Notebook 中看這段代碼,需要使用同樣的%matplotlib魔法命令。然而,也可以直接在notebook中嵌入圖形,這會有兩種輸出選項:
在本書中,將會使用inline選項:
現(xiàn)在再次嘗試一下:
上面的命令會得到下面的繪圖輸出結(jié)果:
如果想要把繪圖保存下來留作以后使用,可以直接在 IPython 或者 Jupyter Notebook 使用下面的命令保存:
僅需要確保你使用了支持的文件后綴,比如.jpg、.png、.tif、.svg、.eps或者.pdf。
作為本章最后一個測試,讓我們對外部數(shù)據(jù)集進行可視化,比如scikit-learn中的數(shù)字數(shù)據(jù)集。
為此,需要三個可視化工具:
那么開始引入這些包吧:
第一步是載入實際數(shù)據(jù):
如果沒記錯的話,digits應該有兩個不同的數(shù)據(jù)域:data域包含了真正的圖像數(shù)據(jù),target域包含了圖像的標簽。相對于相信我們的記憶,我們還是應該對digits稍加 探索 。輸入它的名字,添加一個點號,然后按Tab鍵:digits.TAB,這個操作將向我們展示digits也包含了一些其他的域,比如一個名為images的域。images和data這兩個域,似乎簡單從形狀上就可以區(qū)分。
兩種情況中,第一維對應的都是數(shù)據(jù)集中的圖像數(shù)量。然而,data中所有像素都在一個大的向量中排列,而images保留了各個圖像8×8的空間排列。
因此,如果想要繪制出一副單獨的圖像,使用images將更加合適。首先,使用NumPy的數(shù)組切片從數(shù)據(jù)集中獲取一幅圖像:
這里是從1797個元素的數(shù)組中獲取了它的第一行數(shù)據(jù),這行數(shù)據(jù)對應的是8×8=64個像素。下面就可以使用plt中的imshow函數(shù)來繪制這幅圖像:
上面的命令得到下面的輸出:
此外,這里也使用cmap參數(shù)指定了一個顏色映射。默認情況下,Matplotlib 使用MATLAB默認的顏色映射jet。然而,在灰度圖像的情況下,gray顏色映射更有效。
最后,可以使用plt的subplot函數(shù)繪制全部數(shù)字的樣例。subplot函數(shù)與MATLAB中的函數(shù)一樣,需要指定行數(shù)、列數(shù)以及當前的子繪圖索引(從1開始計算)。我們將使用for 循環(huán)在數(shù)據(jù)集中迭代出前十張圖像,每張圖像都分配到一個單獨的子繪圖中。
這會得到下面的輸出結(jié)果:
關(guān)于作者:Michael Beyeler,華盛頓大學神經(jīng)工程和數(shù)據(jù)科學專業(yè)的博士后,主攻仿生視覺計算模型,用以為盲人植入人工視網(wǎng)膜(仿生眼睛),改善盲人的視覺體驗。 他的工作屬于神經(jīng)科學、計算機工程、計算機視覺和機器學習的交叉領(lǐng)域。同時他也是多個開源項目的積極貢獻者。
本文摘編自《機器學習:使用OpenCV和Python進行智能圖像處理》,經(jīng)出版方授權(quán)發(fā)布。
用plot畫二維圖像時,默認情況下的橫坐標和縱坐標顯示的值有時達不到自己的需求,需要借助xticks()和yticks()分別對橫坐標x-axis和縱坐標y-axis進行設(shè)置。
import numpy as np
import matplotlib.pyplot as plt
x = range(1,13,1)
y = range(1,13,1)
plt.plot(x,y)
plt.show()
此時的x軸和y軸都是只顯示偶數(shù),其它的奇數(shù)未顯示,這樣在展示實驗效果或放入文章中都會影響其可讀性。
為了設(shè)置坐標軸的值,增加其可讀性,有多種方法。這里介紹的是matplotlib的函數(shù)xticks()和yticks()。
擴展資料
基本用法:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 生成x軸上的數(shù)據(jù):從-3到3,總共有50個點
x = np.linspace(-1, 1, 50)
# 定義一個線性方程
y1 = 2 * x + 1
# 定義一個二次方程
y2 = x ** 2
# 設(shè)置x軸的取值范圍為:-1到2
plt.xlim(-1, 2)
# 設(shè)置y軸的取值范圍為:-1到3
plt.ylim(-1, 3)
# 設(shè)置x軸的文本,用于描述x軸代表的是什么
plt.xlabel("I am x")
# 設(shè)置y軸的文本,用于描述y軸代表的是什么
plt.ylabel("I am y")
plt.plot(x, y2)
# 繪制紅色的線寬為1虛線的線條
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
# 顯示圖表
plt.show()
參考資料來源:
百度百科——plot
1.環(huán)境
系統(tǒng):windows10
python版本:python3.6.1
使用的庫:matplotlib,numpy
2.numpy庫產(chǎn)生隨機數(shù)幾種方法
import numpy as np
numpy.random
rand(d0,?d1,?...,?dn) ?
In [2]: x=np.random.rand(2,5)
In [3]: x
Out[3]:
array([[ 0.84286554, ?0.50007593, ?0.66500549, ?0.97387807, ?0.03993009],
[ 0.46391661, ?0.50717355, ?0.21527461, ?0.92692517, ?0.2567891 ]])
randn(d0,?d1,?...,?dn)查詢結(jié)果為標準正態(tài)分布
In [4]: x=np.random.randn(2,5)
In [5]: x
Out[5]:
array([[-0.77195196, ?0.26651203, -0.35045793, -0.0210377 , ?0.89749635],
[-0.20229338, ?1.44852833, -0.10858996, -1.65034606, -0.39793635]])
randint(low,high,size) ?
生成low到high之間(半開區(qū)間 [low, high)),size個數(shù)據(jù)
In [6]: x=np.random.randint(1,8,4)
In [7]: x
Out[7]: array([4, 4, 2, 7])
random_integers(low,high,size) ?
生成low到high之間(閉區(qū)間 [low, high)),size個數(shù)據(jù)
In [10]: x=np.random.random_integers(2,10,5)
In [11]: x
Out[11]: array([7, 4, 5, 4, 2])
3.散點圖
x x軸
y y軸
s ? 圓點面積
c ? 顏色
marker ?圓點形狀
alpha ? 圓點透明度????????????????#其他圖也類似這種配置
N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)
x=np.random.randn(N)
y=np.random.randn(N)
plt.scatter(x,y,s=50,c='r',marker='o',alpha=0.5)
plt.show()
4.折線圖
x=np.linspace(-10000,10000,100) #將-10到10等區(qū)間分成100份
y=x**2+x**3+x**7
plt.plot(x,y)
plt.show()
折線圖使用plot函數(shù)
5.條形圖
N=5
y=[20,10,30,25,15]
y1=np.random.randint(10,50,5)
x=np.random.randint(10,1000,N)
index=np.arange(N)
plt.bar(left=index,height=y,color='red',width=0.3)
plt.bar(left=index+0.3,height=y1,color='black',width=0.3)
plt.show()
orientation設(shè)置橫向條形圖
N=5
y=[20,10,30,25,15]
y1=np.random.randint(10,50,5)
x=np.random.randint(10,1000,N)
index=np.arange(N)# plt.bar(left=index,height=y,color='red',width=0.3)# plt.bar(left=index+0.3,height=y1,color='black',width=0.3)#plt.barh() 加了h就是橫向的條形圖,不用設(shè)置orientation
plt.bar(left=0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')
plt.show()
6.直方圖
m1=100
sigma=20
x=m1+sigma*np.random.randn(2000)
plt.hist(x,bins=50,color="green",normed=True)
plt.show()
# #雙變量的直方圖# #顏色越深頻率越高# #研究雙變量的聯(lián)合分布
#雙變量的直方圖#顏色越深頻率越高#研究雙變量的聯(lián)合分布
x=np.random.rand(1000)+2
y=np.random.rand(1000)+3
plt.hist2d(x,y,bins=40)
plt.show()
7.餅狀圖
#設(shè)置x,y軸比例為1:1,從而達到一個正的圓
#labels標簽參數(shù),x是對應的數(shù)據(jù)列表,autopct顯示每一個區(qū)域占的比例,explode突出顯示某一塊,shadow陰影
labes=['A','B','C','D']
fracs=[15,30,45,10]
explode=[0,0.1,0.05,0]#設(shè)置x,y軸比例為1:1,從而達到一個正的圓
plt.axes(aspect=1)#labels標簽參數(shù),x是對應的數(shù)據(jù)列表,autopct顯示每一個區(qū)域占的比例,explode突出顯示某一塊,shadow陰影
plt.pie(x=fracs,labels=labes,autopct="%.0f%%",explode=explode,shadow=True)
plt.show()
8.箱型圖
import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 點的形狀,whis虛線的長度plt.boxplot(data,sym="o",whis=1.5)plt.show()
#sym 點的形狀,whis虛線的長度
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, ...),添加圖列說明