Python 數據分析 Matplotlib

Matplotlib數據展示

1 matplotlib基礎

Python的一個2D圖形包,pyplot封裝很很多畫圖函數。

import matplotlib.pyplot as plt
import numpy as np

matplotlib.pyplot包含一系列類似類似MATLAB中繪圖函數的相關函數。

1.1 plt.show()函數

默認情況下,matplotlib.pyplot不會直接顯示圖像,只有調用plt.show()函數時,圖像纔會顯示出來。

plt.show()默認時在新窗口打開一幅圖像,並且t提供了對圖像進行操作的按鈕。

不過在ipython命令行中,我們可以將它插入notebook中,並且不需要調用plt.show()也可以顯示:

%matplotlib notebook

%matplotlib inline

不過在實際寫程序中,我們還是習慣調用plt.show()函數將圖像顯示出來。

%matplotlib inline

1.2 plt.plot()函數相關

例子

plt.plot()函數可以用來繪製線型圖

plt.plot([1,2,3,4])   ##默認使用索引作爲x,此處參數指定的是y
[<matplotlib.lines.Line2D at 0x2adadc50af0>]


png

plt.plot([1,2,3,4])
# 指定x軸 y軸
plt.ylabel('y')
plt.xlabel('x')
Text(0.5, 0, 'x')


png

基本用法

plot函數基本的用法:

1.指定x和y:plt.plot(x,y)

2.默認參數,x爲~N-1:plt.plot(y)

因此,在上面的例子中,默認使用了0,1,2,3作爲x值

plt.plot([1,2,3,4],[1,4,9,16])
plt.show()


png

字符參數

常用標識顏色的字符參數:
'b':藍色blue
'g':綠色green
'r':紅色red
'c':青色cyan
'm':品紅magenta
'y':黃色yellow
'k':黑色black
'w':白色white

常用表示類型的字符參數:
'-':實線
'- -':虛線
'-.':虛點線
':'點線
'.':點
',':像素點
'o':圓點
'v':下三角點
'`':上三角點
'<':左三角點
'>':右三角點
'1':下三叉點
'2':上三叉點
'3':左三叉點
'4':右三叉點
's':正方點
'p':五角點
'*':星型點
'h':六邊形點1
'H':六邊形點2
'+':加號點
'x':乘號點
'D':實心菱形點
'd':瘦菱形點
'_':橫線點\

# 紅色圓點
plt.plot([1,2,3,4],[1,4,9,16],'ro')
plt.show()


png

# 綠色虛線
plt.plot([1,2,3,4],[1,4,9,16],'g--')
plt.show()


png

顯示範圍

可以使用axis函數指定座標軸顯示的範圍

# x從0到5 y從0到20plt.plot([1,2,3,4],[1,4,9,16],'g--')plt.axis([0,5,0,20])plt.show()


png

傳入numpy數組

如果傳入的是列表,matplotlib會在內部將它轉化成數組再進行處理

在一個圖裏畫多條線

# 從0.0到5.0 步長是0.2t=np.arange(0.,5.,0.2)t
array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4,       2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8])
plt.plot(t,t,'r--',    #  y = x         t,t**2,'bs',  #  y = x^2         t,t**3,'g-')  #  y = x^3plt.show()


png

傳入多組數據

事實上,在上面的例子中,我們不僅僅向plot函數傳入了數組,還傳入了多組(x,y,format_str)參數,它們在同一張圖上顯示,這意味着我們不需要使用多個plot函數來畫多組數組,只需要將這些組合放到一個plot函數中去即可。
plt.plot(x1,y1,'format1',x2,y2,'format2',......)

線條屬性

之前提到,可以用字符串來控制線條屬性,事實上還可以通過linewidth設置線條粗度,通過color設置線條顏色

x=np.linspace(-np.pi,np.pi)y=np.sin(x)plt.plot(x,y,linewidth=5,color='r')plt.show
<function matplotlib.pyplot.show(close=None, block=None)>


png

利用plt.plot的返回值來這是線條屬性

plot函數返回一個line2D對象組成的列表,每個對象代表輸入的一對組合,例如:
line1,line2爲兩個Line2D對象
line1,line2 = plt.plot(x1,y1,x2,y2)
返回3個Line2D對象組成的列表
lines=plt.plot(x1,y1,x2,y2,x3,y3)
我們可以使用這個返回值來對線條屬性進行設置。

x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
line1,line2=plt.plot(x,y,'r-',x,y+1,'g-')
## 對plot返回的一個對象進行屬性修改
line1.set_antialiased(False)   ## 抗鋸齒功能關閉 讓線條更加平滑
plt.show()


png

lines=plt.plot(x,y,'r-',x,y+1,'g-')
## 對plot返回列表進行屬性修改
# lines.set_antialiased(False)   ## 返回的是一個列表 報錯 抗鋸齒功能關閉
plt.show()


png

無法直接對返回的列表屬性進行修改

利用plt.setp()修改線條性質
x=np.linspace(-np.pi,np.pi)
y=np.sin(x)
line=plt.plot(x,y)
plt.setp(line,color='r',linewidth=5)
plt.show()

png

## Matlab的設置方式plt.setp(line,'color','r','linewidth',5)
[None, None]

子圖

figure()函數會產生一個指定編號爲num的圖:plt.figure(num)
這裏,figure(1)其實是可以省略的,因爲默認情況下,plt會自動產生一幅圖像。

使用subplot()可以在一幅圖中生成多個子圖,其參數爲:plt.subplot(numrows,numcols,fignum)
當numrows * numcols < 10時,中間的逗號可以省略,因此plt.subplot(211)就相當於plt.subplot(2,1,1) 兩行一列 個位數可以省略逗號

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)# 圖形尺寸10*6plt.figure(figsize=(10,6))# 兩行一列中的第一張圖plt.subplot(211)plt.plot(t1,f(t1),'bo',t2,f(t2),'k')# 兩行一列中的第二張圖plt.subplot(212)plt.plot(t2,np.cos(2*np.pi*t2),'r--')plt.show()


png

2 電影數據繪圖

2.1 庫導入及數據導入

關閉警告消息

import warningswarnings.filterwarnings('ignore')
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt

自定義圖形屬性

plt.rcParams['font.sans-serif']=['SimHei']  ##設置字體爲 黑體plt.rcParams['axes.unicode_minus']=False ##顯示符號
df=pd.read_excel('movies_data3.xlsx') ##導入電影數據df.head()
Unnamed: 0 年代 產地 Unnamed: 0.1 Unnamed: 0.1.1 名字 投票人數 類型 上映時間 時長 評分 首映地點 評分等級 熱門程度
0 0 1994 美國 0 0.0 肖申克的救贖 692795 劇情/犯罪 1994-09-10 00:00:00 142 9.6 多倫多電影節 A A
1 1 1957 美國 1 1.0 控方證人 42995 劇情/懸疑/犯罪 1957-12-17 00:00:00 116 9.5 美國 A A
2 2 1997 意大利 2 2.0 美麗人生 327855 劇情/喜劇/愛情 1997-12-20 00:00:00 116 9.5 意大利 A A
3 3 1994 美國 3 3.0 阿甘正傳 580897 劇情/愛情 1994-06-23 00:00:00 142 9.4 洛杉磯首映 A A
4 4 1993 中國大陸 4 4.0 霸王別姬 478523 劇情/愛情/同性 1993-01-01 00:00:00 171 9.4 香港 A A

2.2 柱狀圖 plt.bar()

柱狀圖 bar chart,是一種以長方形的長度爲變量的表達圖形統計報告圖,由一系列高度不等的縱向條紋表示數據分佈的情況,用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變量,通常利用於較小的數據集分析。柱狀圖可橫向排列,或用多維方式表達。

繪製每個國家或地區的電影數量的柱狀圖

data=df['產地'].value_counts()data
美國      11978日本       5049中國大陸     3802中國香港     2851法國       2815英國       2761其他       1919韓國       1351德國       1032意大利       749加拿大       723中國臺灣      618俄羅斯       477西班牙       447印度        357澳大利亞      300泰國        294丹麥        198瑞典        192波蘭        181荷蘭        155比利時       139墨西哥       119阿根廷       116巴西        101Name: 產地, dtype: int64
x=data.indexy=data.values## 定義圖片大小plt.figure(figsize=(15,6))## 定義圖片標題plt.title('各國家或地區電影數量',fontsize=20)## 設置橫縱軸的名稱plt.xlabel('國家或地區',fontsize=18)plt.ylabel('電影數量',fontsize=18)##調整軸上屬性plt.tick_params(labelsize=14)  ##字體設置14號plt.xticks(rotation=90)  ##X軸的字體進行90度旋轉## 添加網格線plt.grid()## 在每個柱形上標註文本for a,b in zip(x,y):    plt.text(a,b+10,b,ha='center',va='bottom',fontsize=15,color='r')       ##text(橫座標,縱座標,標註文本,對齊方式,標註位置(在柱形的方位),字體大小,)## 柱狀圖繪製plt.bar(x,y,color='g')plt.show()


png

2.3 曲線圖 plt.plot()

曲線圖利用曲線的升降變化來標識被研究現象發展變化趨勢的一種圖形。它在分析研究社會經濟現象的發展變化,依存關係等方面具有重要作用。

繪製曲線圖使,如果是某一現象的時間指標,應將時間繪在座標的橫軸上,指標繪在縱軸上。如果是兩個現象依存關係的顯示。可以將標識原因的指標繪在橫軸上,表示結果的指標繪在縱軸上。同時還應該注意整個圖形的長寬比例。

繪製每年上映的電影數量的曲線圖 1838-2015年

data=df['年代'].value_counts()data=data.sort_index()data=data[:-2]  ## 按年份排序,把2016年和2017年剔掉data
1888       21890       11892       11894       31895       8        ... 2011    18662012    20422013    20012014    18872015    1591Name: 年代, Length: 125, dtype: int64
x=data.indexy=data.valuesplt.figure(figsize=[15,6])plt.plot(x,y,color='b')plt.title('每年上映的電影數量',fontsize=20)plt.xlabel('年份',fontsize=18)plt.ylabel('電影數量',fontsize=18)plt.tick_params(labelsize=14)# 每隔十年顯示一次## 設置x的間距/步長爲10的文本顯示for a,b in zip(x[::10],y[::10]):    plt.text(a,b+10,b,ha='center',va='bottom',fontsize=15)## 標記特殊點 annotate  ## (箭頭文本,特殊點位置(箭頭位置),文本位置(箭尾位置),箭頭屬性(填充顏色,邊框顏色))plt.annotate('2012年達到最大值',xy=(2012,data[2012]),xytext=(2025,2100),arrowprops=dict(facecolor='black',edgecolor='red'))## 設置文本plt.text(1980,1000,'電影數量開始快速增長')plt.show()


png

2.4 餅圖 plt.pie()

餅圖 Sector Graph。僅排列在工作表的一列或一行中,的數據可以繪製到餅圖中。餅圖顯示一個數據系列(數據系列:在圖標中繪製的相關數據點,這些數據原子數據表的行或列。圖表中的每個數據系列具有唯一的顏色或圖案,並且在圖表的圖像中表示。可以在圖表中繪製一個或多個數據系列。餅圖只有一個數據系列。)中各項的大小與各項綜合的比例。餅圖中的數據點(數據點:在圖表中繪製的單個值。這些值由條形、柱形、折線、餅圖或圓環的扇面、遠點和其他被稱爲數據標記的圖形表示。相同顏色的數據標記組成一個數據系列。)顯示爲整個餅圖的百分比。

函數原型:
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangel=None, radius=None)

參數:
x:(每一塊)的比例,如果sum(x) > 1 會使用sum(x) 歸一化
labels:(每一塊)餅圖外側顯示的說明文字
explode:(每一塊)離開中心距離
startangle:其實繪製角度,默認圖是從x軸正方向逆時針畫起。如設定=90則從y軸正方向畫起
shadow:是否陰影
labeldistance:label繪製位置。相對於半徑的比例。如<1則繪製在餅圖內側
autopct:控制餅圖內百分比設置,可以使用format字符串或者format function('%1.1f'指小數點前後位數(沒有用空格補齊))
pctdistance:類似於labeldistance。指定autopct的位置刻度
radius:控制餅圖半徑

返回值:
如果沒有設置autopct,返回(patches, texts)
如果設置autopct,返回(patches, texts, autotexts)

根據電影的時長繪製餅圖

data=pd.cut(df['時長'],[0,60,90,110,1000]).value_counts()data
(90, 110]      13230(0, 60]        10321(60, 90]        7725(110, 1000]     7448Name: 時長, dtype: int64
y=data.values
## 可有可無,不寫的話,系統自動進行歸一化
y=y/sum(y)
# 設置畫布
plt.figure(figsize=(7,7))
plt.title('電影時長佔比',fontsize=20)

patches,l_text,p_text = plt.pie(y,labels=data.index,autopct='%.1f %%',colors='bygr',startangle=90)

## 設置返回值——餅圖內部字體
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.legend()

plt.show()


png

2.5 直方圖 plt.hist()

直方圖 Histogram又稱質量分佈直方圖,是一種統計報告圖。由一系列高度不等的縱向條紋或線段表示數據分佈情況。一般用橫軸表示數據類型,縱軸表示分佈情況。
直方圖是數值數據分佈的精確圖形表示。這是一個連續變量(定量變量)的概率分佈的估計,是一種條形圖。爲了構建直方圖,第一步是將值的範圍分段,即將整個值得範圍分成一系列間隔,然後計算每個間隔中有多少值(這些值通產被指定爲連續的,不重疊的變量間隔。)將必須相鄰,並且通常是(但不是必須)相等的大小。
直方圖也可以被歸一化,以顯示“相對”概率。然後,它顯示了屬於幾個類別中的每個案例的比例,其高度等於1.

plt.hist()
參數:

arr:需要計算直方圖的一維數組
bins:直方圖的柱數,可選項,默認爲10
normed:是否將得到的直方圖向量歸一化。默認爲0
facecolor:直方圖的顏色
edgecolor:直方圖邊框的顏色
alpha:透明度
histtype:直方圖類型(‘bar’,‘barstacked’,‘step’,‘stepfilled’)

返回值

n:直方圖向量,是否歸一化由參數normed設置
bins:返回各個bin的區間範圍
patches:返回每個bin裏面包含的數據,是一個list

根據電影的評分繪製頻率分佈直方圖

plt.figure(figsize=(10,6))
plt.hist(df['評分'],bins=20,edgecolor='k',alpha=0.5)
plt.show()


png

2.6 雙軸圖 norm.pdf(bins,mu,sigma)

根據電影的評分繪製頻率分佈雙軸圖(公用一個x軸的直方圖和曲線圖)

import matplotlib.mlab as mlab
from scipy.stats import norm
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(111)
n,bins,patches=ax1.hist(df['評分'],bins=100,color='m')

ax1.set_ylabel('電影數量',fontsize=15)
ax1.set_xlabel('評分',fontsize=15)
ax1.set_title('頻率分佈圖',fontsize=20)

y=norm.pdf(bins,df['評分'].mean(),df['評分'].std())   ##在直方圖的基礎上再建一個軸
ax2=ax1.twinx()  ## 和直方圖使用同一個x軸
ax2.plot(bins,y,'g-')
ax1.set_ylabel('頻類分佈',fontsize=15)

plt.show()


png

2.7 散點圖 plt.scatter()

用兩組數據構成多個座標點,考察座標點的分佈,判斷兩變量之間是否存在某種關聯或總結座標點的分佈模式。散點圖將序列顯示爲一組點。值由點在圖表中的位置表示。類別由圖表中的不同標記表示。散點圖通常用於比較跨類別的聚合數據。

根據電影時長和電影評分繪製散點圖

x=df['時長']
y=df['評分']

plt.figure(figsize=(10,8))
plt.scatter(x,y)
plt.title('電影時長與評分散點圖',fontsize=20)
plt.xlabel('時長',fontsize=18)
plt.ylabel('評分',fontsize=18)

plt.show()


png

由於數據量過大,所以畫的圖非常冗雜

x=df['時長'][::100]
y=df['評分'][::100]

plt.figure(figsize=(10,6))
plt.scatter(x,y,marker='*')
plt.title('電影時長與評分散點圖',fontsize=20)
plt.xlabel('時長',fontsize=18)
plt.ylabel('評分',fontsize=18)

plt.show()


png

可以發現,大部分的電影時長還是集中在50-100附近,評分大多在7分左右

marker屬性

設置散點的形狀:

'.':point點
',':pixel像素
'o':circle圈
'v':倒三角形
'^':正三角形
'<':左三角形
'>':右三角形
'1':tri_down
'2':tri_up
'3':tri_left
'4':tri_right
'8':八角形
's':正方形
'p':五角
'*':星形
'h':六角1
'H':六角2
'+':加號
'x':x號
'D':鑽石
'd':細鑽
'|':v線
'_':H線

2.8 箱型圖 plt.boxplot()

箱型圖(box-plot)又稱爲盒裝圖,盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。因形狀如箱子而得名。在各種領域也經常被使用,常見於品質管理。它主要用於反映原始數據分佈特徵,還可以進行多組數據分佈特徵的比較。
箱線圖的繪製方法是:先找出一組數據的中位數,兩個四分位數,上下邊緣線;然後,連接兩個四分位數畫出箱子;再將上下邊緣線與箱子相連接,中位數在箱子中間。

一般設計過程

(1)計算上四分位數(Q3),中位數,下四分位數(Q1)

(2)計算上四分位數和下四分位數之間的差值,即四分位數差(IQR,interquatile range)Q3-Q1

(3)繪製箱線圖的上下範圍,上限爲上四分位數,下限爲下四分位數。在箱子內部中位數的位置繪製橫線

(4)大於上四分位數1.5倍四分位數差的值,或小於下四分位數1.5倍四分位數差的值,劃爲異常值

(5)異常值之外,最靠近上邊緣和下邊緣的兩個值處,畫橫線,作爲箱線的觸鬚

(6)極端異常值,即超出四分位數差3倍距離的異常值,用實心點表示;較爲溫和的異常值,即處於1.5倍到3倍之間的異常值,用空心點表示

(7)爲箱線圖添加名稱,數軸等

參數詳解

plt.boxplot(x, notch=None, sym=None, vert=None,
whis=None, positions=None, widths=None,
patch_artist=None, meanline=None, showmeans=None,
showcaps=None, showbox=None, showfliers=None,
boxprops=None, labels=None, flierprops=None,
medianprops=None, meanprops=None,
capprops=None, whiskerprops=None)

x:指定要繪製箱線圖的數據;
notch:是否是凹口的形式展現箱線圖,默認非凹口;
sym:指定異常點的形狀,默認爲+號顯示;
vert:是否需要將箱線圖垂直襬放,默認垂直襬放;
whis:指定上下須與上下四分位的距離,默認爲1.5倍的四分位差;
positions:指定箱線圖的位置,默認爲[0,1,2…];
widths:指定箱線圖的寬度,默認爲0.5;
patch_artist:是否填充箱體的顏色;
meanline:是否用線的形式表示均值,默認用點來表示;
showmeans:是否顯示均值,默認不顯示;
showcaps:是否顯示箱線圖頂端和末端的兩條線,默認顯示;
showbox:是否顯示箱線圖的箱體,默認顯示;
showfliers:是否顯示異常值,默認顯示;
boxprops:設置箱體的屬性,如邊框色,填充色等;
labels:爲箱線圖添加標籤,類似於圖例的作用;
flierprops:設置異常值的屬性,如異常點的形狀、大小、填充色等;
medianprops:設置中位數的屬性,如線的類型、粗細等;
meanprops:設置均值的屬性,如點的大小、顏色等;
capprops:設置箱線圖頂端和末端線條的屬性,如顏色、粗細等;
whiskerprops:設置須的屬性,如顏色、粗細、線的類型等;

繪製美國電影評分數據箱線圖

data=df[df.產地=='美國']['評分']
data
0        9.600000
1        9.500000
3        9.400000
5        9.400000
6        9.400000
           ...   
38712    7.400000
38714    8.200000
38717    8.100000
38719    7.600000
38723    6.935704
Name: 評分, Length: 11978, dtype: float64
plt.figure(figsize=(10,6))
plt.boxplot(data,whis=2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},  ##異常點設置
            patch_artist=True,boxprops={'color':'k','facecolor':'#9999ff'})   ##箱體顏色填充
plt.title('美國電影評分箱線圖',fontsize=20)
plt.show()


png

多組數據箱線圖

data1=df[df.產地=='中國大陸']['評分']
data2=df[df.產地=='日本']['評分']
data3=df[df.產地=='中國香港']['評分']
data4=df[df.產地=='英國']['評分']
data5=df[df.產地=='法國']['評分']
plt.figure(figsize=(12,8))
plt.boxplot([data1,data2,data3,data4,data5],labels=['中國大陸','日本','中國香港','英國','法國'],
            whis=2,flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
            patch_artist=True,boxprops={'color':'k','facecolor':'g'})
plt.title('電影評分箱線圖',fontsize=20)

ax=plt.gca()  ##獲得座標系
ax.patch.set_facecolor('gray')  ##調整背景顏色
ax.patch.set_alpha(0.3)  ##背景顏色透明度

plt.show()


png

2.9 相關係數矩陣圖——熱力圖 pd.plotting.scatter_matrix()和seaborn.heatmap()

相關係數矩陣圖

繪製 電影時長、投票人數、評分 的一個相關係數矩陣

data=df[['投票人數','評分','時長']]
data.head()
投票人數 評分 時長
0 692795 9.6 142
1 42995 9.5 116
2 327855 9.5 116
3 580897 9.4 142
4 478523 9.4 171

Pandas中本身封裝了畫圖函數

畫出三個屬性之間的散點圖,對角線是分佈圖

%pylab inline
result=pd.plotting.scatter_matrix(data[::100],diagonal='kde',   ##kde對角線上使用和密度估計,hist直方圖
                         color='k',alpha=0.3,figsize=(10,10))  
Populating the interactive namespace from numpy and matplotlib

png

熱力圖

seaborn 是一個精簡的python庫,可以創建具有統計意義的圖表,能理解pandas的DataFrame類型

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)

參數詳解

(1)熱力圖輸入數據參數:
data:矩陣數據集,可以是numpy的數組(array),也可以是pandas的DataFrame。如果是DataFrame,則df的index/column信息會分別對應到heatmap的columns和rows,即pt.index是熱力圖的行標,pt.columns是熱力圖的列標
(2)熱力圖矩陣塊顏色參數:
vmax,vmin:分別是熱力圖的顏色取值最大和最小範圍,默認是根據data數據表裏的取值確定
cmap:從數字到色彩空間的映射,取值是matplotlib包裏的colormap名稱或顏色對象,或者表示顏色的列表;改參數默認值:根據center參數設定
center:數據表取值有差異時,設置熱力圖的色彩中心對齊值;通過設置center值,可以調整生成的圖像顏色的整體深淺;設置center數據時,如果有數據溢出,則手動設置的vmax、vmin會自動改變
robust:默認取值False;如果是False,且沒設定vmin和vmax的值,熱力圖的顏色映射範圍根據具有魯棒性的分位數設定,而不是用極值設定
(3)熱力圖矩陣塊註釋參數:
annot(annotate的縮寫):默認取值False;如果是True,在熱力圖每個方格寫入數據;如果是矩陣,在熱力圖每個方格寫入該矩陣對應位置數據
fmt:字符串格式代碼,矩陣上標識數字的數據格式,比如保留小數點後幾位數字
annot_kws:默認取值False;如果是True,設置熱力圖矩陣上數字的大小顏色字體,matplotlib包text類下的字體設置;
(4)熱力圖矩陣塊之間間隔及間隔線參數:
linewidths:定義熱力圖裏“表示兩兩特徵關係的矩陣小塊”之間的間隔大小
linecolor:切分熱力圖上每個矩陣小塊的線的顏色,默認值是’white’
(5)熱力圖顏色刻度條參數:
cbar:是否在熱力圖側邊繪製顏色刻度條,默認值是True
cbar_kws:熱力圖側邊繪製顏色刻度條時,相關字體設置,默認值是None
cbar_ax:熱力圖側邊繪製顏色刻度條時,刻度條位置設置,默認值是None
(6)square:設置熱力圖矩陣小塊形狀,默認值是False
xticklabels, yticklabels:xticklabels控制每列標籤名的輸出;yticklabels控制每行標籤名的輸出。默認值是auto。如果是True,則以DataFrame的列名作爲標籤名。如果是False,則不添加行標籤名。如果是列表,則標籤名改爲列表中給的內容。如果是整數K,則在圖上每隔K個標籤進行一次標註。 如果是auto,則自動選擇標籤的標註間距,將標籤名不重疊的部分(或全部)輸出
mask:控制某個矩陣塊是否顯示出來。默認值是None。如果是布爾型的DataFrame,則將DataFrame裏True的位置用白色覆蓋掉
ax:設置作圖的座標軸,一般畫多個子圖時需要修改不同的子圖的該值
**kwargs:All other keyword arguments are passed to ax.pcolormesh

繪製 電影時長、投票人數、評分 的熱力圖

import seaborn as sns
corr=data.corr()  ##相關係數
corr=abs(corr)  ##絕對值(忽略正負相關,只看相關性)
fig=plt.figure(figsize=(10,8))
ax=fig.add_subplot(111)

ax=sns.heatmap(corr,vmax=1,vmin=0,annot=True,annot_kws={'size':13,'weight':'bold'},linewidth=0.05)

plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.show()


png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章