Python matplotlib seaborn绘图教程详解

 更新时间:2022年03月14日 08:57:56   作者:渴望成为寂寞胜者  
Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。本文将详细讲解如何利用Seaborn绘制图表,需要的可以参考一下

一、seaborn概述

Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。详情请查阅官网:seaborn

二、数据整理

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'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
from datetime import datetime 
films=['穿过寒冬拥抱你','反贪风暴5:最终章','李茂扮太子','误杀2','以年为单位的恋爱','黑客帝国:矩阵重启','雄狮少年','魔法满屋','汪汪队立大功大电影','爱情神话']
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=['剧情','动作','喜剧','剧情','剧情','爱情','动作','动画','动画','动画']
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

# 常用调色盘
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()
# 对两种画图进行比较
fig = plt.figure()
sns.set()
sinplot()

plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
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()

三、绘图

上面的数据只有十部电影,而下面的数据是我整理出来的电影数据:

Excel:300部电影数据整理

import pandas as pd 
cnboo=pd.read_excel("cnboNPPD1.xlsx")
cnboo

01 设定调色盘

# 设定调色盘
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 技术图

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 点图

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()
# 图中的单个点代表在此数据当中的异常值

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()

到此这篇关于Python matplotlib seaborn绘图教程详解的文章就介绍到这了,更多相关Python seaborn绘图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Idea安装python显示无SDK问题解决方案

    Idea安装python显示无SDK问题解决方案

    这篇文章主要介绍了Idea安装python显示无SDK问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python中如何添加自定义模块

    Python中如何添加自定义模块

    在本篇文章里小编给大家分享了关于Python中添加自定义模块的实例方法,需要的朋友们可以学习下。
    2020-06-06
  • python tkinter的消息框模块(messagebox,simpledialog)

    python tkinter的消息框模块(messagebox,simpledialog)

    这篇文章主要介绍了python tkinter的消息框模块,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11
  • python实现Adapter模式实例代码

    python实现Adapter模式实例代码

    这篇文章主要介绍了python实现Adapter模式实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python数学建模PuLP库线性规划入门示例详解

    Python数学建模PuLP库线性规划入门示例详解

    这篇文章主要为大家介绍了Python数学建模PuLP库线性规划入门示例详解,想学习关于Python建模的同学可以学习参考下,希望能够有所帮助
    2021-10-10
  • 分享一个简单的python读写文件脚本

    分享一个简单的python读写文件脚本

    这篇文章主要介绍了分享一个简单的python读写文件脚本,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python基本文件操作实用指南

    Python基本文件操作实用指南

    文件操作是我们开发中必不可少的一项需求,下面这篇文章主要给大家介绍了关于Python基本文件操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • python怎样判断一个数值(字符串)为整数

    python怎样判断一个数值(字符串)为整数

    这篇文章主要介绍了python怎样判断一个数值(字符串)为整数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python将dict中的unicode打印成中文实例

    python将dict中的unicode打印成中文实例

    这篇文章主要介绍了python将dict中的unicode打印成中文实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python迭代器模块itertools常用的方法

    python迭代器模块itertools常用的方法

    这篇文章主要介绍了python迭代器模块itertools常用的方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论