代碼py3測試都可運行,此處不貼圖,可自行運行查看結(jié)果
1、簡介:
Matplotlib 是一個Python 的 2D繪圖庫。 它可與 NumPy 一起使用,提供了一種有效的 MatLab 開源替代方案。 它也可以和圖形工具包一起使用,如 PyQt 和 wxPython
2、安裝:
windows(題主win10):進入到cmd模式后輸入?
python -m pip install matplotlib
滾動結(jié)束后 在python IDLE中輸入import matplotlib 若無報錯,則安裝成功。
3、常見屬性以及函數(shù)介紹(matplotlib經(jīng)常搭配numpy使用,想了解numpy請參考python擴充庫之numpy)
3.1 figure()
# Matlab中的 figure 命令,能夠創(chuàng)建一個用來顯示圖形輸出的一個窗口對象。
# 每一個這樣的窗口都有一些屬性,例如窗口的尺寸、位置,等等。
使用方法:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = 2*x +1
y2 = x**2
#plot為一個畫圖函數(shù)
plt.figure() #定義一個figure
plt.plot(x,y1)
plt.figure(num = 3,figsize=(8,5)) #num 指定figuer序號 ;figsize()圖形尺寸
#在一個figure中顯式多條線
plt.plot(x,y2)
plt.plot(x,y1,color='red',linestyle='--') #color = 顏色 ,linewidth = 線寬,linestyle = 線形式
plt.show()
3.2 xlim/ylim xlabel/ylabel等坐標軸常見屬性
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y1 = x**2
y2 = x + 1
plt.figure(figsize=(8,5))
plt.plot(x,y1)
plt.plot(x,y2,color='blue',linewidth=1.2,linestyle='dotted')
#xlim ylim x 與 y坐標軸的限度
plt.xlim((-1,2))
plt.ylim((-2,3))
#xlabel ylabel x與y坐標軸的標簽
plt.xlabel("x ")
# ,fontproperties=FontProperties(fname='/system/library/fonts/pingfang.tcc')
plt.ylabel('y ')
#xticks yticks設置坐標軸上數(shù)據(jù)間隔以及標記
new_ticks = np.linspace(-1,2,5)
print(new_ticks)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,3],
[r'$really\ bad$',r'$bad\alpha$',r'$good$',r'really good'])
#$改變字體$ \alpha 特殊字符
#圖邊框處理
#gca = get current axis
#獲得圖邊框
ax = plt.gca()
#設置圖邊框顏色
ax.spines['right'].set_color('None')
ax.spines['top'].set_color('none')
#設定默認x 與y軸
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#設置x軸與y軸相交點
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
plt.show()
對于無法顯示中文問題 請?參考
3.3 tick (能見度)操作
#tick 能見度
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y = 2*x + 1
plt.figure()
plt.plot(x,y,lw=10,zorder=1)
plt.ylim(-2,2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
#ticks修改參數(shù)
for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_zorder(2)
label.set_fontsize(12) #修改字體大小
label.set_bbox(dict(facecolor='white',edgecolor='None',alpha=0.7))#alpha表征透明度
plt.show()
3.4 plot 函數(shù)位于 matplotlib.pyplot 這個模塊中,是繪制圖形的主要函數(shù)。plot 函數(shù)可以接收多組 X 軸、Y 軸數(shù)據(jù)進行繪圖,也可以控制曲線的格式
3.5scatter 散點圖
#matplotlib_plot.py
import matplotlib.pyplot as plt
import numpy as np
n = 500
x = np.random.normal(0,1,n) #生成中位數(shù)是0, 方差是1 ,n個隨機數(shù)
y = np.random.normal(0,1,n)
#顏色值
T = np.arctan2(y,x)
plt.figure(figsize=(7,5))
plt.scatter(x,y,s=30,c=T,alpha=0.5)
plt.scatter(np.arange(5),np.arange(5)) #一條線
plt.xlim=(-1.5,1.5)
plt.ylim=(-1.5,1.5)
plt.xticks(())
plt.yticks(())
plt.show()
3.6legend 圖例
#圖例
import matplotlib.pyplot as plt
import numpy as np
#添加對曲線的描述
x = np.linspace(-3,3,50)
y1 = 2*x +1
y2 = x**2
plt.figure(figsize=(8,5))
plt.xlim((-1,2))
plt.ylim((-2,3))
plt.xlabel('x')
plt.ylabel('y')
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks)
plt.yticks([-2,-1.8,-1,3],
[r'$really\ bad$',r'$bad\alpha$',r'$good$',r'really good'])
# 此處注意若使用
# l1 = plt.plot(x,y1,color='red',linestyle='--',label='down')
# print(type(l1)) 則會輸出list
# l2 = plt.plot(x,y2,label='up')
# 則會出錯
#label添加曲線標簽(名字)
l1, = plt.plot(x,y1,color='red',linestyle='--',label='down')
print(type(l1)) #
l2, = plt.plot(x,y2,label='up')
#loc 默認為best 選取一個空閑區(qū)顯式 handles: 放入legend的對象
plt.legend(handles=[l1,l2,],labels=['aaa','bbb'],loc='best')
plt.show()
3.7 annotion 標注
#annotaion 標注
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50)
y = 2*x +1
plt.figure(num =1,figsize=(8,5))
plt.plot(x,y)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #指定x軸
ax.spines['bottom'].set_position(('data',0)) #指定x軸與y軸某點相交點
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
x0 = 1
y0 = 2*x0+1
plt.scatter(x0,y0,s =50,color='r') #scatter散點圖 s:點的大小 color:點的顏色
plt.plot([x0,x0],[y0,0],'k--',lw=2.5)
####F1
plt.annotate(r'$2x+1=%s$'%y0,xy=(x0,y0),xycoords='data',xytext=(+30,-30),textcoords='offset points',
fontsize=16,arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
####F2
plt.text(-3.7,3,r'$Some\ text\ .\ \mu\ \sigma_i\ \alpha_t$',
fontdict={'size':16,'color':'r'})
plt.show()
先到這,未完待續(xù)想了解更多不同類型圖像如柱狀圖,等高圖請見python擴充庫之matplotlib(二)
numpy.meshgrid()理解
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
