1. 程式人生 > >數據分析——作圖(Python)

數據分析——作圖(Python)

orb sub als ams log range pos div blog

一、基礎設置

導入相關的庫

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline   #在ipython總顯示圖表

默認不顯示中文,因此需要更改設置,顯示中文 

#顯示中文
import matplotlib as mpl 
mpl.rcParams[‘font.sans-serif‘] = [u‘SimHei‘]
mpl.rcParams[‘axes.unicode_minus‘] = False  

設置全局變量

mpl.rc(‘font‘,size=12)  #字體
mpl.rc(‘figure‘,figsize=(8,6))  #圖像大小
mpl.rc(‘axes.spines‘,right=False,top=False)  #設置右邊上邊的橫線是否顯示

二、導入數據,並查看

data = sns.load_dataset(‘tips‘)
data.head()
#字段含義分別是:總消費,小費,性別,是否吸煙,周末,時間,幾個人

 技術分享圖片

三、作圖(matplotlib)

1、折線圖

fig,ax = plt.subplots()  #fig主要設置一些全局的變量,而ax主要負責畫圖
ax.plot(data.index,data[‘total_bill‘])
fig.set_size_inches(12,6) #重新設置大小
plt.title(‘折線圖標題‘,fontsize=22)  #標題,更改字體大小
ax.set_xlabel(‘X軸‘,fontsize=18) #設置x軸,y軸的標題
ax.set_ylabel(‘Y軸‘,fontsize=18)
plt.yticks(fontsize=14) #刻度字體大小
plt.xticks(fontsize=14)
plt.legend([‘標簽‘],fontsize=15)  #標簽內容字體大小
plt.savefig(‘折線圖‘,dpi=100)  #保存圖片,可以設置dpi

技術分享圖片

2、柱形圖

data_bar1 = data[‘tip‘].groupby(data[‘day‘]).mean() #統計數據,按照星期來分組
data_bar2 = data[‘tip‘].groupby(data[‘time‘]).mean() #統計數據,按照星期來分組
error = data[‘tip‘].groupby(data[‘time‘]).std() 
fig,ax = plt.subplots(1,2)   #畫出兩個區域
ax[0].bar(data_bar1.index,data_bar1.values)  #第一個區域怎麽畫
ax[0].set_xlabel(‘小費星期關系圖‘,fontsize=16)
ax[0].set_ylabel(‘小費‘,fontsize=16)
ax[0].legend([‘星期‘])
ax[0].set_ylim(0,4)  #設置Y軸最大最小值

ax[1].bar(data_bar2.index,data_bar2.values) #第二個區域怎麽畫
ax[1].errorbar(data_bar2.index,data_bar2.values,yerr = error,ls = ‘none‘,color=‘#96CDCD‘,lw=6)  #加入方差圖
ax[1].legend([‘午晚餐‘])
ax[1].set_xlabel(‘小費午晚餐關系圖‘,fontsize=16)
ax[1].set_xticklabels([‘晚餐‘,‘午餐‘])   #更改坐標軸的名稱
ax[1].set_ylim(0,4)  #設置Y軸最大最小值

fig.set_size_inches(12,6)  #設置整個圖的大小
plt.savefig(‘柱形圖‘,dpi=100)  #保存圖片,可以設置dpi

技術分享圖片

3、橫軸的柱形圖

data_barh = data[‘tip‘].groupby(data[‘sex‘]).mean()  #統計數據,男女小費
fig,ax = plt.subplots()
ax.barh(data_barh.index,data_barh.values,0.4)  #0.4是寬度
fig.set_size_inches(6,2)
plt.title(‘橫著的‘)
ax.set_ylabel(‘性別‘,fontsize=20)
ax.set_xlabel(‘小費‘,fontsize = 20)
plt.xticks(fontsize=14)
ax.set_yticklabels([‘男性‘,‘女性‘])

  技術分享圖片

4、餅圖

data_pie = data[‘size‘].groupby(data[‘size‘]).size()
fig,ax = plt.subplots()
ax.pie(data_pir,autopct=‘%1.1f%%‘,labels=data_pie.index,colors = [‘#B0E0E6‘,‘#B0C4DE‘,‘#A6A6A6‘,‘#FF3E96‘,‘#FFB5C5‘,‘#FFEBCD‘])
#數據源,顯示的數值,顯示標簽,顏色
fig.set_size_inches(8,8)  #如果兩個數字不相等會變成橢圓

 技術分享圖片

5、散點圖

fig,ax = plt.subplots()
ax.scatter(data[‘tip‘],data[‘total_bill‘])
fig.set_size_inches(8,6)
ax.set_xlabel(‘小費‘,fontsize=18)
ax.set_ylabel(‘總消費‘,fontsize=18)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)

  技術分享圖片

6、幾個區域的畫圖方法(一種是用上面的柱形圖那種方法 fig,ax = plt.subplots(1,2),另一種是下面的這種,這種可以自定義占據的空格數)

fig = plt.figure()
ax1 = plt.subplot2grid((2,3),(0,0))
ax1.bar(data_bar.index,data_bar.values)
fig.set_size_inches(12,6)
ax2 = plt.subplot2grid((2,3),(0,1),colspan=2)#占據幾個空額,也可以是rowspan,一個是橫的,一個是豎的
ax2.scatter(data[‘tip‘],data[‘total_bill‘])
ax3 = plt.subplot2grid((2,3),(1,0))
ax3.barh(data_barh.index,data_barh.values)

技術分享圖片

7、兩根柱形圖對比

fig,ax = plt.subplots()
ax.bar(np.arange(4),data_bar.values,0.3)    #橫坐標先用數字代替
ax.bar(np.arange(4)+0.3,data_bar.values*2,0.3)   #偏移一定量
ax.set_xticks(np.arange(4)+0.15)   #重新設置x軸的位置
ax.set_xticklabels(data_bar.index)   #重新設置名稱

  技術分享圖片

四、作圖(seaborn)

  

 

  

  

  

數據分析——作圖(Python)