Python直接使用plot()函數(shù)畫圖的方法實(shí)例
一、plot()函數(shù)的認(rèn)識(shí)
在使用Python進(jìn)行數(shù)據(jù)可視化編程中matplotlib庫(kù)是我們用來(lái)對(duì)數(shù)據(jù)進(jìn)行畫圖常用的第三方庫(kù)。其中含有各類函數(shù)也就是不同類型的圖形,要使用matplotlib庫(kù)中的函數(shù)就需要了解函數(shù)所需要數(shù)據(jù)的格式,這也是我們學(xué)習(xí)matplotlib庫(kù)的重點(diǎn)。
直接使用plot()函數(shù)畫圖,是對(duì)于一般的簡(jiǎn)單數(shù)據(jù)。我們可以采用直接調(diào)用plot()函數(shù)對(duì)列表數(shù)據(jù)進(jìn)行直接畫圖。初期學(xué)習(xí)直接使用plot()函數(shù)能便于我們對(duì)后面圖形學(xué)習(xí)奠定函數(shù)的參數(shù)及基礎(chǔ)。
matplotlib圖的組成:
- Figure (畫布)
- Axes (坐標(biāo)系)
- Axis (坐標(biāo)軸)
- 圖形(plot(),scatter(),bar(),...)
- Title, Labels, ......
直接是用plot()函數(shù)畫圖如法如下:
plt.plot(x, y, fmt='xxx', linestyle=, marker=, color=, linewidth=, markersize=, label=, )
其中x,y代表橫縱坐標(biāo),fmt = '#color#linestyle#marker'即代表各類參數(shù)。
(1)linestyle:此字段是線的樣式,參數(shù)形式:字符串
linestyle(線的樣式)
linestyle參數(shù) | 線形 |
'-' | 實(shí)線 |
'--' | 虛線 |
'-.' | 點(diǎn)劃線 |
':' | 點(diǎn)虛線 |
' ' | 無(wú)線 |
(2)linewidth:此參數(shù)是線的粗細(xì),粗細(xì)程度和所定數(shù)值大小有關(guān),參數(shù)形式:數(shù)值
(3)marker:點(diǎn)的樣式,字符串
marker(點(diǎn)的樣式)
marker | 標(biāo)記點(diǎn) |
'.' | 店 |
',' | 像素 |
'^' 'v' '>' '<' | 上下左右三角形 |
'1' '2' '3' '4' | 上下左右三叉線 |
'o' | 圓形 |
's' 'D' | 方形 |
'p' | 五邊形 |
'h' 'H' | 六邊形 |
'*' | 五角星 |
'+' 'x' | 十字交叉 |
'_' | 橫線 |
' | ' |
(4)markersize:點(diǎn)的大小,參數(shù)形式:數(shù)值
(5)color:調(diào)節(jié)線條還有點(diǎn)的顏色 ,字符串,參數(shù)形式字符串
color(點(diǎn)、線顏色)
字符串 | color |
'r' | 紅 |
'g' | 綠 |
'b' | 藍(lán) |
'y' | 黃 |
'c' | 青 |
'm' | 品 |
'k' | 黑 |
'w' | 白 |
此處顏色參數(shù)還可以有二進(jìn)制,十進(jìn)制等表示方法,同時(shí)對(duì)于顏色,RGB是三原色
(6)label:圖例,legend文字
二、plot()函數(shù)基本運(yùn)用
使用plot()函數(shù)時(shí)需要導(dǎo)入對(duì)應(yīng)的庫(kù),導(dǎo)入庫(kù)后我們?cè)谖从袛?shù)據(jù)的情況下直接畫圖,直接畫圖會(huì)隱式創(chuàng)建Figure,Axes對(duì)象。
import matplotlib.pyplot as pltplt.plot()
下面通過構(gòu)造數(shù)據(jù)繪制簡(jiǎn)單圖形
首先數(shù)據(jù)構(gòu)造,設(shè)置參數(shù),參數(shù)也可以在將數(shù)據(jù)填入plot()函數(shù)的時(shí)候設(shè)置。
# 導(dǎo)入包 import matplotlib.pyplot as plt import numpy as np # 構(gòu)造數(shù)據(jù) # 位置 (2維:x,y一一對(duì)應(yīng)) x = np.linspace(0, 2 * np.pi, 200) # 從0到2pi的200個(gè)值 y = np.sin(x) # 從sin(0)到sin(2pi)的200個(gè)值 # 顏色(0維) c = 'red' c = 'r' c = '#FF0000' # 大?。?維): 線寬 lw = 1
畫出圖形
# 生成一個(gè)Figure畫布和一個(gè)Axes坐標(biāo)系 fig, ax = plt.subplots() # 在生成的坐標(biāo)系下畫折線圖 ax.plot(x, y, c, linewidth=lw) # 顯示圖形 plt.show()
圖形展示:
給定兩組數(shù)據(jù),建立y與x的關(guān)系試,使用plot函數(shù)進(jìn)行畫圖,本次畫圖線條選用點(diǎn)虛線形式,粗細(xì)選用1,點(diǎn)選用方形,點(diǎn)大小選用值為10,圖例為‘1234’
import matplotlib.pyplot as plt x = [1,2,3] y = [1,2,3] y = x plt.plot(x,y,linestyle=':', linewidth=1, marker='d', markersize=10, label='1234') plt.legend()
作出圖片如下;
下面我們引用numpy的linspace函數(shù)生創(chuàng)建均勻分布序列,然后對(duì)x,y建立數(shù)值關(guān)系,由此來(lái)創(chuàng)建圖畫。
import matplotlib.pyplot as plt import numpy as np x = np.linspace(-100,100,10) y = x**2 + 2*x +1 plt.plot(x,y,'g-.o')
作出如下圖案,由此可見,我們對(duì)于圖形的設(shè)置方面,在我們熟練以后如果沒有粗細(xì)的設(shè)置可以直接縮減再一個(gè)字符串里面
以上都是簡(jiǎn)單圖形的講解,我們現(xiàn)在通過一個(gè)簡(jiǎn)單的對(duì)數(shù)據(jù)DataFrame進(jìn)行作圖,在往后的數(shù)據(jù)可視化中我們需要對(duì)數(shù)據(jù)進(jìn)行處理后再進(jìn)行可視化。下面我們通過正、余弦函數(shù)進(jìn)行作圖。
#導(dǎo)入包 import matplotlib.pyplot as plt import numpy as np import pandas as pd #使用linspace()方法構(gòu)成數(shù)據(jù) x = np.linspace(0, 2 * np.pi, 50) # y1 = np.sin(x) y2 = np.cos(x) #轉(zhuǎn)化數(shù)據(jù)形式 df = pd.DataFrame([x,y1,y2]).T #對(duì)列重新命名 df.columns = ['x','sin(x)','cos(x)'] #數(shù)據(jù)寫入圖像,命名圖例 plt.plot(df['x'],df['sin(x)'],label='sin(x)') plt.plot(df['x'],df['cos(x)'],label='cos(x)') plt.legend()
我們通過numpy的linspace方法生成數(shù)據(jù)再通過pandas對(duì)數(shù)據(jù)進(jìn)行DataFrame化再帶入plot()函數(shù),此處需要講的就是圖例的命名方法,通過在函數(shù)中寫入label參數(shù),確定圖例的標(biāo)簽,再通過legend()函數(shù)生成圖例,在后續(xù)的學(xué)習(xí)中也會(huì)講到圖例的位置、形式等的運(yùn)用。
三、plot()函數(shù)數(shù)據(jù)可視化畫圖以及圖元基本參數(shù)設(shè)置
通過繪制世界人口變化曲線圖了解基本圖元參數(shù)設(shè)置,本次繪圖過程主要是先通過對(duì)人口數(shù)據(jù)導(dǎo)入,了解數(shù)據(jù)構(gòu)造,再進(jìn)配置畫圖參數(shù)最后完成圖形的制作,其中基本的圖元參數(shù)用于別的圖形也適用,在這兒學(xué)會(huì)了我們只需要了解數(shù)據(jù)結(jié)構(gòu),構(gòu)造成圖形所要的數(shù)據(jù)結(jié)構(gòu)就可以就行畫出自己想要的圖形。
首先進(jìn)行數(shù)據(jù)導(dǎo)入,了解數(shù)據(jù)結(jié)構(gòu)形式。為了學(xué)習(xí)方便,選用jupyter notebook進(jìn)行可視化圖形講解。
import pandas as pd datafile = r'world_population.txt' # 打開文件 df = pd.read_csv(datafile) #讀取數(shù)據(jù) df.head()#展示前面部分?jǐn)?shù)據(jù)
以下就是基本的數(shù)據(jù)樣式,由年份和人口數(shù)量組成
這里做了基本的圖元設(shè)計(jì),也就是對(duì)于畫布的設(shè)置,前面我們所學(xué)函數(shù)參數(shù)都是對(duì)于圖形中間的設(shè)置,我們構(gòu)成一個(gè)可視化界面是通過畫布+畫中圖形樣式組成一個(gè)完整的可視化界面。
畫布界面有畫布大小,畫布像素,畫布界面,畫布邊框等設(shè)置。
import matplotlib.pyplot as plt # 畫布 fig = plt.figure(figsize=(6,4), # inches dpi=120, # dot-per-inch facecolor='#BBBBBB', frameon=True, # 畫布邊框 ) plt.plot(df['year'],df['population']) # 標(biāo)題 plt.title("1960-2009 World Population")
構(gòu)成一個(gè)完整的可視化圖像除了圖例還有圖像的標(biāo)題,我們可以通過title()方法設(shè)置英文標(biāo)題,中文標(biāo)題要通過以下代碼才能實(shí)現(xiàn),因此我們?nèi)绻亲鲋形捻?xiàng)目在導(dǎo)入包以后就可以寫上設(shè)置中文代碼的代碼串。
# 設(shè)置中文字體 plt.rcParams['font.sans-serif'] = 'SimHei' # 設(shè)置字體為簡(jiǎn)黑(SimHei) plt.rcParams['font.sans-serif'] = 'FangSong' # 設(shè)置字體為仿宋(FangSong)
當(dāng)然,除了這種比較簡(jiǎn)單的圖形之外我們還能對(duì)圖形進(jìn)行優(yōu)化設(shè)置,將數(shù)據(jù)顯示的更加的精美和美觀,對(duì)圖形優(yōu)化便于實(shí)際報(bào)告中的演示也是我們現(xiàn)在必不可少的的一環(huán)。
import matplotlib.pyplot as plt # 設(shè)置中文字體 plt.rcParams['axes.unicode_minus'] = False # 不使用中文減號(hào) plt.rcParams['font.sans-serif'] = 'FangSong' # 設(shè)置字體為仿宋(FangSong) # 畫布 fig = plt.figure(figsize=(6,4), # inches dpi=120, # dot-per-inch facecolor='#BBBBBB', frameon=True, # 畫布邊框 ) plt.plot(df['year'],df['population'],'b:o',label='人口數(shù)') # 中文標(biāo)題 plt.title("1960-2009 世界人口") # 字體字典 font_dict=dict(fontsize=8, color='k', family='SimHei', weight='light', style='italic', ) # X軸標(biāo)簽 plt.xlabel("年份", loc='center', fontdict=font_dict) # loc: 左中右 left center right # Y軸標(biāo)簽 plt.ylabel("人口數(shù)",loc='top', fontdict=font_dict) # loc: 上中下 top center bottom # X軸范圍 plt.xlim((2000,2010)) # X軸的起點(diǎn)和終點(diǎn) # Y軸范圍 plt.ylim(6e9,7e9) # Y軸的起點(diǎn)和終點(diǎn) # X軸刻度 plt.xticks(np.arange(2000,2011)) # X軸刻度 plt.yticks(np.arange(6e9,7e9+1e8,1e8)) # 圖例 plt.legend() # plt.legend(labels=['人口']) # 網(wǎng)格線 plt.grid(axis='y') # axis: 'both','x','y'
上述代碼,對(duì)x軸,y軸的刻度、標(biāo)簽、字體進(jìn)行定義,對(duì)圖例、網(wǎng)格線等也做出了參數(shù)的設(shè)置,最后做出的圖形如下圖:
總結(jié)
到此這篇關(guān)于Python直接使用plot()函數(shù)畫圖的文章就介紹到這了,更多相關(guān)Python plot()函數(shù)畫圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python TCP全連接攻擊中SockStress全連接攻擊詳解
Sock Stress 全連接攻擊屬于TCP全連接攻擊,因?yàn)樾枰⒁淮瓮暾腡CP三次握手,該攻擊的關(guān)鍵點(diǎn)就在于,攻擊主機(jī)將windows窗口緩沖設(shè)置為0,實(shí)現(xiàn)的拒絕服務(wù)2022-10-10Python基于scrapy采集數(shù)據(jù)時(shí)使用代理服務(wù)器的方法
這篇文章主要介紹了Python基于scrapy采集數(shù)據(jù)時(shí)使用代理服務(wù)器的方法,涉及Python使用代理服務(wù)器的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04python通過pil模塊將raw圖片轉(zhuǎn)換成png圖片的方法
這篇文章主要介紹了python通過pil模塊將raw圖片轉(zhuǎn)換成png圖片的方法,實(shí)例分析了Python中pil模塊的使用技巧,并Image.fromstring函數(shù)進(jìn)行了較為詳盡的分析說明,需要的朋友可以參考下2015-03-03python基礎(chǔ)知識(shí)小結(jié)之集合
本文給大家小結(jié)了一下Python中集合的基礎(chǔ)知識(shí),非常的簡(jiǎn)單易懂,有需要的小伙伴可以參考下。2015-11-11簡(jiǎn)單介紹Python下自己編寫web框架的一些要點(diǎn)
這篇文章主要介紹了簡(jiǎn)單介紹Python下自己編寫web框架的一些要點(diǎn),示例代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04Python2.X/Python3.X中urllib庫(kù)區(qū)別講解
本篇文章通過對(duì)比給大家詳細(xì)講解了在Python2和Python3中urllib庫(kù)區(qū)別以及用法講解,有需要的朋友跟著學(xué)習(xí)下吧。2017-12-12Python使用matplotlib實(shí)現(xiàn)的圖像讀取、切割裁剪功能示例
這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)的圖像讀取、切割裁剪功能,結(jié)合實(shí)例形式分析了Python基于matplotlib操作圖片的加載、讀取、坐標(biāo)控制及裁剪相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Python第三方庫(kù)jieba庫(kù)與中文分詞全面詳解
jieba庫(kù)是一款優(yōu)秀的Python第三方中文分詞庫(kù),jieba支持三種分詞模式:精確模式、全模式和搜索引擎模式,下面這篇文章主要給大家介紹了關(guān)于Python第三方庫(kù)jieba庫(kù)與中文分詞的相關(guān)資料,需要的朋友可以參考下2022-07-07Matplotlib實(shí)戰(zhàn)之玫瑰圖繪制詳解
南丁格爾玫瑰圖是一種用極坐標(biāo)下的柱狀圖或堆疊柱狀圖來(lái)展示數(shù)據(jù)的圖表,下面我們就來(lái)介紹一下如何使用Matplotlib繪制南丁格爾玫瑰圖,需要的可以參考下2023-08-08