Python?matplotlib?seaborn繪圖教程詳解
一、seaborn概述
Seaborn是在matplotlib的基礎(chǔ)上進(jìn)行了更高級的API封裝,從而使得作圖更加容易,在大多數(shù)情況下使用seaborn就能做出很具有吸引力的圖。詳情請查閱官網(wǎng):seaborn
二、數(shù)據(jù)整理
import seaborn as sns import numpy as np import matplotlib as mpl from matplotlib import pyplot as plt import pandas as pd from datetime import datetime,timedelta %matplotlib inline plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus']=False # 用來正常顯示負(fù)號 from datetime import datetime
films=['穿過寒冬擁抱你','反貪風(fēng)暴5:最終章','李茂扮太子','誤殺2','以年為單位的戀愛','黑客帝國:矩陣重啟','雄獅少年','魔法滿屋','汪汪隊(duì)立大功大電影','愛情神話'] regions=['中國','英國','澳大利亞','美國','美國','中國','英國','澳大利亞','美國','美國'] bos=['61,181','44,303','42,439','22,984','13,979','61,181','44,303','41,439','20,984','19,979'] persons=['31','23','56','17','9','31','23','56','17','9'] prices=['51','43','56','57','49','51','43','56','57','49'] showdate=['2022-12-03','2022-12-05','2022-12-01','2022-12-02','2022-11-05','2022-12-03','2022-12-05','2022-12-01','2022-12-02','2022-11-05'] ftypes=['劇情','動(dòng)作','喜劇','劇情','劇情','愛情','動(dòng)作','動(dòng)畫','動(dòng)畫','動(dòng)畫'] points=['8.1','9.0','7.9','6.7','3.8','8.1','9.0','7.9','6.7','3.8'] filmdescript={ 'ftypes':ftypes, 'bos':bos, 'prices':prices, 'persons':persons, 'regions':regions, 'showdate':showdate, 'points':points }
import numpy as np import pandas as pd cnbo2021top5=pd.DataFrame(filmdescript,index=films) cnbo2021top5[['prices','persons']]=cnbo2021top5[['prices','persons']].astype(int) cnbo2021top5['bos']=cnbo2021top5['bos'].str.replace(',','').astype(int) cnbo2021top5['showdate']=cnbo2021top5['showdate'].astype('datetime64') cnbo2021top5['points']=cnbo2021top5['points'].apply(lambda x:float(x) if x!='' else 0)
cnbo2021top5
# 常用調(diào)色盤 r_hex = '#dc2624' # red, RGB = 220,38,36 dt_hex = '#2b4750' # dark teal, RGB = 43,71,80 tl_hex = '#45a0a2' # teal, RGB = 69,160,162 r1_hex = '#e87a59' # red, RGB = 232,122,89 tl1_hex = '#7dcaa9' # teal, RGB = 125,202,169 g_hex = '#649E7D' # green, RGB = 100,158,125 o_hex = '#dc8018' # orange, RGB = 220,128,24 tn_hex = '#C89F91' # tan, RGB = 200,159,145 g50_hex = '#6c6d6c' # grey-50, RGB = 108,109,108 bg_hex = '#4f6268' # blue grey, RGB = 79,98,104 g25_hex = '#c7cccf' # grey-25, RGB = 199,204,207
color=['#dc2624' ,'#2b4750','#45a0a2','#e87a59','#7dcaa9','#649E7D','#dc8018','#C89F91','#6c6d6c','#4f6268','#c7cccf'] sns.set_palette(color)
01 折線圖
def sinplot(flip=1): x = np.linspace(0, 14, 100) for i in range(1, 7): plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip) sinplot() # 對兩種畫圖進(jìn)行比較 fig = plt.figure() sns.set() sinplot()
plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus']=False # 用來正常顯示負(fù)號 plt.figure(figsize=(14,8)) plt.title("中國電影票房2021top10") plt.xlabel("電影名稱") plt.ylabel("電影票房") sns.lineplot(data=cnbo2021top5[['bos']]) plt.xticks(rotation=45)
02 柱形圖
cnbo2021top5ftgb=cnbo2021top5.groupby(['ftypes'])['bos','persons','prices','points'].mean() cnbo2021top5ftgb=cnbo2021top5ftgb.reset_index().replace() cnbo2021top5ftgb
### 02 條形圖 plt.figure(figsize=(14,8)) plt.title("中國電影票房2021top10") sns.barplot(x=cnbo2021top5ftgb['ftypes'],y=cnbo2021top5ftgb['persons']) plt.xlabel("電影類型") plt.ylabel("場均人次") plt.xticks(rotation=45) plt.show()
03 直方圖
### 03 直方圖 plt.figure(figsize=(14,8)) plt.title("中國電影票房2021top10") sns.histplot(x=cnbo2021top5['bos'],bins=15) # x=cnbo2021top5ftgb['ftypes'],y=cnbo2021top5ftgb['persons'] plt.xlabel("電影類型") plt.ylabel("場均人次") plt.xticks(rotation=45) plt.show()
三、繪圖
上面的數(shù)據(jù)只有十部電影,而下面的數(shù)據(jù)是我整理出來的電影數(shù)據(jù):
import pandas as pd cnboo=pd.read_excel("cnboNPPD1.xlsx") cnboo
01 設(shè)定調(diào)色盤
# 設(shè)定調(diào)色盤 sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) # 表示11種顏色
02 柱狀圖
sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(25,20)) plt.title('電影票房') plt.xticks(rotation=45) sns.barplot(x='TYPE', y='PRICE', hue='TYPE', data=cnboo)
03 技術(shù)圖
sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(15,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.countplot(x='TYPE',data=cnboo)
04 點(diǎn)圖
sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(15,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.pointplot(x='TYPE',y='PRICE',data=cnboo) plt.show()
sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(25,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.pointplot(x='TYPE',y='PRICE',hue='REGION',data=cnboo) plt.show()
05 箱型圖
### 05 箱型圖 sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(35,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.boxplot(x='TYPE',y='PERSONS',hue='REGION',data=cnboo) # ,markers=['^','o'],linestyles=['-','--'] plt.show() # 圖中的單個(gè)點(diǎn)代表在此數(shù)據(jù)當(dāng)中的異常值
06 小提琴圖
### 06 小提琴圖 sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(35,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.violinplot(x='TYPE',y='PRICE',hue='REGION',data=cnboo) # ,markers=['^','o'],linestyles=['-','--'] plt.show()
繪制橫著的小提琴圖:
sns.set_palette(color) sns.palplot(sns.color_palette(color,11)) plt.figure(figsize=(35,10)) plt.title('電影票房') plt.xticks(rotation=45) sns.violinplot(x='PERSONS',y='PRICE',hue='REGION',data=cnboo,orient='h') plt.show()
到此這篇關(guān)于Python matplotlib seaborn繪圖教程詳解的文章就介紹到這了,更多相關(guān)Python seaborn繪圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python tkinter的消息框模塊(messagebox,simpledialog)
這篇文章主要介紹了python tkinter的消息框模塊,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11python實(shí)現(xiàn)Adapter模式實(shí)例代碼
這篇文章主要介紹了python實(shí)現(xiàn)Adapter模式實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02Python數(shù)學(xué)建模PuLP庫線性規(guī)劃入門示例詳解
這篇文章主要為大家介紹了Python數(shù)學(xué)建模PuLP庫線性規(guī)劃入門示例詳解,想學(xué)習(xí)關(guān)于Python建模的同學(xué)可以學(xué)習(xí)參考下,希望能夠有所幫助2021-10-10python怎樣判斷一個(gè)數(shù)值(字符串)為整數(shù)
這篇文章主要介紹了python怎樣判斷一個(gè)數(shù)值(字符串)為整數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02python將dict中的unicode打印成中文實(shí)例
這篇文章主要介紹了python將dict中的unicode打印成中文實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05