//2019.07.22
pyhton中matplotlib模塊的應用
pyhton中matplotlib是可視化圖像庫的第三方庫,它可以實現圖像的可視化,輸出不同形式的圖形
1、可視化圖形的輸出和展示需要調用matplotlib第三方庫的函數plt.show(),它的功能類似於print,相當於打印出自己需要輸出的可視化圖像,當然也可以用一些特殊的輸出語句如下:
%matplotlib.notebook
%matplotlib.inline
2、對於一般的二維圖像輸出可以用函數plt.plot(x,y)來進行輸出,另外如果想要修改函數輸出圖像的一些細節格式,則含有以下幾種方式:
#對於線條屬性的定義
plt.figure(3)
x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
plt.plot(x,y,linewidth=4.0,color="r")
#使用pot.plot()函數來設置線條屬性
plt.figure(4)
line1,line2=plt.plot(x,y,"r",x,y+1,"g") #輸出兩個函數圖像
line1.set_antialiased(False) #對於線條屬性進行后續的定義(抗鋸齒形輸出關閉)
#使用plt.setp()進行設置
plt.figure(5)
line=plt.plot(x,y)
plt.setp(line,color="g",linewidth=4.0)
plt.setp(line,"color","r","linewidth",4)
3、多個函數圖像的子圖的輸出函數一般使用函數plt.subplot(x,y,z)這樣來進行多個函數圖像的輸出,其中x,y代表的是整個函數圖像是一個x行y列的圖像集合,z代表你所要目前索要輸出函數圖像的順序和位置。
4、對於柱狀圖的輸出主要用到的函數是plt.bar(x,y)函數,其中x,y是指兩個相關的變量取值,對於輸出柱狀圖的圖像細節設置和修改主要包含以下幾個方面:
data=pd.value_counts(df["類型"])
print(data)
x=data.index #定義柱狀圖的x/y軸參數取值
y=data.values
plt.figure()
plt.title("不同類型酒店的數量",fontsize=20) #設置標題的名稱和標題的字體大小
plt.xlabel("類型",fontsize=15) #設置x/y軸的名稱個字體的大小
plt.ylabel("數量",fontsize=15)
plt.bar(x,y,color="r")#輸出x/y兩個變量的柱狀圖圖像需要用函數plt.bar(x,y)
plt.tick_params(labelsize=10) #設置坐標軸上數字黨的大小尺寸
plt.xticks(rotation=90) #設置x坐標軸的標注進行90度的旋轉(展示效果會更加好)
for a,b in zip(x,y):
plt.text(a,b+5,b,ha="center",va="bottom",fontsize=10)
#設置柱狀圖的標注文字形式,ha是指文字的對其方式,va是指柱狀圖橫線在文字的相對位置
5、對於任何形式的函數圖像,如果想要對其中的某一點進行箭頭的專門強調標注,需要用到函數:
plt.annotate("評分4.5達到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
#對圖像中任何一點進行箭頭專門強調式的標注相所需要設置的函數
其中xy代表的是需要標注強調的點的位置和坐標
xytext表示的是強調標注文字開始的位置
arrowprops代表的是對於所標注箭頭格式的設置
6、對於函數圖像中添加任何標注信息需要用到函數plt.text(x,y,z)函數,其中x,y代表的是標注的位置,z表示的是標注的信息
7、對於折線圖的繪制就用一般的plt.plot(x,y)函數即可進行相應的輸出,其中很多函數圖像的細節設置主要包含以下幾個方面(舉例來講):
#折線圖的繪制
plt.figure()
x1=df["評分"]
print(x1)
y1=df["評分"].value_counts()
y2=y1.sort_index()
print(y2)
x=y2.index
y=y2.values
plt.plot(x,y,"g")
plt.xlabel("評分大小")
plt.ylabel("數量")
plt.title("評分相同的酒店數量")
for a,b in zip(x[::10],y[::10]):
plt.text(a,b+3,b) #每隔10個點進行輸出
plt.annotate("評分4.5達到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
#對圖像中任何一點進行箭頭專門強調式的標注相所需要設置的函數
plt.text(2.0,40,"隨着評分的增加,其酒店數量也在增加") #在圖像中添加任何一個標注信息使用的函數及其參數設置
8、餅圖的繪制:
#餅圖的繪制plt.pie()
data=pd.cut(df["評分"],[0,3,4.3,4.6,4.8,5.0]).value_counts()
print(data)
y1=data.values
print(y1)
y=y1/sum(y1)
plt.figure(figsize=(7,7))
plt.title("酒店評分占比")
#plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #繪制餅圖的函數設置
plt.legend() #顯示餅圖圖像的圖例
patches,l_text,p_text=plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #繪制餅圖的格式設置
for i in p_text:
i.set_size(15)
i.set_color("w")
for i in l_text:
i.set_size(15)
i.set_color("r") #對餅圖內外文字字體的格式進行相應的設置

9、直方圖的繪制:
#繪制頻率分布直方圖plt.hist()
plt.figure(figsize=(10,6))
plt.hist(df["評分"],bins=20,facecolor="r",edgecolor="k",alpha=0.9,histtype="bar")
#直方圖胡輸出函數參數設置

整體運行代碼如下:
#導入相應的matplotlib模塊及其他常用的可視乎圖像常用的模塊
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #輸出圖像的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線里的負號
plt.figure(1)
plt.plot([0,1,2,3],[1,2,3,4],label="二維折線原圖")
plt.ylabel("y") #設置縱軸的名稱
plt.xlabel("x")
plt.title("函數圖像輸出") #設置函數的標題
plt.figure(2)
plt.plot([1,2,3,4],[1,4,9,16],"r-",label="一次函數圖像") #輸出函數圖像
#plt.axis([0,10,0,20]) #設置坐標軸的顯示范圍
plt.legend(loc=1) #設置函數圖像曲線標注的位置
print(np.arange(0,5,0.2))
t=np.arange(0,5,0.2)
plt.plot(t,t,"r--",t,t**2,"b*",t,t**3,"g^") #在同一個plot函數(同一個圖像當中)當中輸入三條函數圖像
#對於線條屬性的定義
plt.figure(3)
x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
plt.plot(x,y,linewidth=4.0,color="r")
#使用pot.plot()函數來設置線條屬性
plt.figure(4)
line1,line2=plt.plot(x,y,"r",x,y+1,"g") #輸出兩個函數圖像
line1.set_antialiased(False) #對於線條屬性進行后續的定義(抗鋸齒形輸出關閉)
#使用plt.setp()進行設置
plt.figure(5)
line=plt.plot(x,y)
plt.setp(line,color="g",linewidth=4.0)
plt.setp(line,"color","r","linewidth",4)
#子圖的輸出函數
#plt.subplot(numrows,numcols,fignum)
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t)
t1=np.arange(0,5,0.1)
t2=np.arange(0,5,0.02)
plt.figure(figsize=(10,6)) #輸出一個新的函數圖像尺寸大小為10x6
plt.subplot(211) #子圖1
plt.plot(t1,f(t1),"bo",t2,f(t2),"k")
plt.subplot(212) #子圖2
plt.plot(t2,np.cos(2*np.pi*t2),"r--")
#輸出其他一些的可視化常用圖形(柱狀圖、餅圖、直方圖等)
import warnings
warnings.filterwarnings("ignore")#對警告的信息進行忽略
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"]=["SimHei"] #輸出圖像的標題可以為中文正常輸出
plt.rcParams["axes.unicode_minus"]=False #可以正常輸出圖線里的負號
#導入我們所需要的各自第三方庫
df=pd.read_excel("D:/Byrbt2018/Study/Python數據分析課程+練習+講解/Python數據分析課程+練習+講解/作業/作業4/作業4/酒店數據1.xlsx")#導入w我們的表格數據文件
print(df)
print(df.index)
print(df.columns)
#繪制柱狀圖plt.bar()
data=pd.value_counts(df["類型"])
print(data)
x=data.index #定義柱狀圖的x/y軸參數取值
y=data.values
plt.figure()
plt.title("不同類型酒店的數量",fontsize=20) #設置標題的名稱和標題的字體大小
plt.xlabel("類型",fontsize=15) #設置x/y軸的名稱個字體的大小
plt.ylabel("數量",fontsize=15)
plt.bar(x,y,color="r") #輸出x/y兩個變量的柱狀圖圖像需要用函數plt.bar(x,y)
plt.tick_params(labelsize=10) #設置坐標軸上數字黨的大小尺寸
plt.xticks(rotation=90) #設置x坐標軸的標注進行90度的旋轉(展示效果會更加好)
for a,b in zip(x,y):
plt.text(a,b+5,b,ha="center",va="bottom",fontsize=10)
#設置柱狀圖的標注文字形式,ha是指文字的對其方式,va是指柱狀圖橫線在文字的相對位置
#折線圖的繪制
plt.figure()
x1=df["評分"]
print(x1)
y1=df["評分"].value_counts()
y2=y1.sort_index()
print(y2)
x=y2.index
y=y2.values
plt.plot(x,y,"g")
plt.xlabel("評分大小")
plt.ylabel("數量")
plt.title("評分相同的酒店數量")
for a,b in zip(x[::10],y[::10]):
plt.text(a,b+3,b) #每隔10個點進行輸出
plt.annotate("評分4.5達到最大值",xy=(4.5,y2[4.5]),xytext=(3.5,55),arrowprops=dict(facecolor="red",edgecolor="green"))
#對圖像中任何一點進行箭頭專門強調式的標注相所需要設置的函數
plt.text(2.0,40,"隨着評分的增加,其酒店數量也在增加") #在圖像中添加任何一個標注信息使用的函數及其參數設置
#餅圖的繪制plt.pie()
data=pd.cut(df["評分"],[0,3,4.3,4.6,4.8,5.0]).value_counts()
print(data)
y1=data.values
print(y1)
y=y1/sum(y1)
plt.figure(figsize=(7,7))
plt.title("酒店評分占比")
#plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #繪制餅圖的函數設置
plt.legend() #顯示餅圖圖像的圖例
patches,l_text,p_text=plt.pie(y1,labels=data.index,autopct="%.1f%%",colors="bygrk") #繪制餅圖的格式設置
for i in p_text:
i.set_size(15)
i.set_color("w")
for i in l_text:
i.set_size(15)
i.set_color("r") #對餅圖內外文字字體的格式進行相應的設置
#繪制頻率分布直方圖plt.hist()
plt.figure(figsize=(10,6))
plt.hist(df["評分"],bins=20,facecolor="r",edgecolor="k",alpha=0.9,histtype="bar")
#直方圖胡輸出函數參數設置
plt.show() #輸出相應的二維圖像

