数据

详细请见上一篇.

数据载入:

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt, cm
import seaborn as sns
from sqlalchemy import create_engine
import sqlite3
import warnings
%matplotlib

warnings.filterwarnings('ignore')
# plt.style.use('ggplot')
sns.set()
np.random.seed(2019)
# 解决使用seaborn风格中文乱码问题
sns.set_style('whitegrid',{'font.sans-serif':['simhei']})

# 连接数据库
engine = create_engine('sqlite:///steam.sqlite')

# 导入数据
df = pd.read_sql('select * from steam', con=engine)

# 弃去index列
df.drop(columns='index', inplace=True)

data = df[(df.owners<5000)&(df.average_forever<10000)].sample(1000)

seaborn 高级用法

组合图表

relplot()

用于在FacetGrid上绘制关系图的图级界面

# 使用col分列, row分行
_ = sns.relplot(data=data, x='positive', y='negative', hue='us_rank',
               col='free')

python数据可视化: 使用seaborn(下)

# 使用kind进行种类的选择
_ = sns.relplot(data=data, x='positive', y='negative', hue='us_rank',
               col='free', kind='line',style="us_rank")

python数据可视化: 使用seaborn(下)

catplot()

用于将分类图绘制到FacetGrid上的图级界面

# 输入一个变量
_ = sns.catplot(data=data, x='free', col='us_rank', kind='count')

python数据可视化: 使用seaborn(下)

# 输入连个变量绘制小提琴图
_ = sns.catplot(data=data, x='free', y='score_rank', col='us_rank',
               kind='violin')

python数据可视化: 使用seaborn(下)

jointplot()

用双变量和单变量图绘制两个变量的图

# 风格更改
sns.set(style='white', color_codes=True)

_ = sns.jointplot(data=data, x='userscore', y='positive')

python数据可视化: 使用seaborn(下)

# kind更改类型{“scatter”| “reg”| “resid”| “kde”| “hex”}可选默认scatter
_ = sns.jointplot(data=data, x='userscore', y='score_rank', kind='reg',
                 color='g')

python数据可视化: 使用seaborn(下)

# kde模式
_ = sns.jointplot(data=data, x='userscore', y='owners', kind='kde',
                 color='r')

python数据可视化: 使用seaborn(下)

# 将关键字参数传递给底层图,使用plot_joint添加密度估计
_ = sns.jointplot(data=data, x='userscore', y='owners',ratio=3, 
                  marginal_kws=dict(bins=10,rug=True)
                 ).plot_joint(sns.kdeplot, zorder=0, n_levels=6)

python数据可视化: 使用seaborn(下)

pairplot()

seaborn中最常用的工具,绘制数据集中的成对关系

sns.set(style="ticks", color_codes=True)
# 获取数据
data1 = data.iloc[:,[2, 3, 4, 5, 6, -2, -1]]
# 直接把pandas表格输入就能绘制每成对关系, kind和diag_kind分别更改两边和对角线的图类型
_ = sns.pairplot(data1, kind='reg', diag_kind='hist')

python数据可视化: 使用seaborn(下)

# 更改cmap样式, 关键字传递给底层函数
_ = sns.pairplot(data1, hue='us_rank', palette='RdYlBu_r', 
                 diag_kws=dict(shade=False))

python数据可视化: 使用seaborn(下)

FacetGrid()

用于绘制条件关系的多图网格.
工作流程是FacetGrid使用数据集和用于构造网格的变量初始化对象。然后,可以通过调用FacetGrid.map()或将一个或多个绘图函数应用于每个子集 FacetGrid.map_dataframe()。最后,可以使用其他方法调整绘图,以执行更改轴标签,使用不同刻度或添加图例等操作

python数据可视化: 使用seaborn(下)

# 先根据分类创建网格
g = sns.FacetGrid(data=data, col='us_rank', row='free', hue='score_rank',
                 palette='cool')
# 在每个点位格中绘制图
g = g.map(plt.scatter,'owners','positive', marker='+')
g.savefig('facetGrid.png')

python数据可视化: 使用seaborn(下)

# 使用自定义函数
def myplot(x, y, **kwargs):
    x_ = np.log(x)
    y_ = np.log(y)
    plt.scatter(x_, y_, **kwargs)
g = sns.FacetGrid(data, col='us_rank', row='free', palette='cool',
                  hue='score_rank')
g = g.map(myplot,'owners','positive').set_titles("{col_name} pic")
g.savefig('facetGrid2.png')

python数据可视化: 使用seaborn(下)

PairGrid()

用于绘制数据集中成对关系的子图网格

sns.set()
g = sns.PairGrid(data, hue='us_rank', palette='cool',
                 vars=['owners', 'average_forever','score_rank','userscore'])
# 设置对角线绘图样式
g = g.map_diag(plt.hist, histtype='step', linewidth=3)
# 设置除对角线以外单元格绘图样式
g = g.map_offdiag(plt.scatter).add_legend()
g.savefig('PairGrid1.png')

python数据可视化: 使用seaborn(下)

g = sns.PairGrid(data, vars=['positive', 'average_forever','score_rank','userscore'])
# 设置对角线绘图样式
g = g.map_diag(plt.hist, histtype='step', linewidth=3, color='k').add_legend()
# 设置对角线上面单元格样式
g = g.map_upper(sns.regplot, color='g')
# 设置对角线下面单元格样式
g = g.map_lower(sns.kdeplot, cmap='cool')
# 保存
g.savefig('PairGrid2.png')

python数据可视化: 使用seaborn(下)

JointGrid()

用于绘制具有边缘单变量图的双变量图的网格

from scipy import stats
sns.set(style='white')
g = sns.JointGrid(data=data, x='userscore', y='positive')
# 设置中间位置图形
g = g.plot_joint(plt.scatter, color='g', s=40, edgecolor='w')
# 设置边缘图像
g = g.plot_marginals(sns.distplot, kde=False, color="r")
# 添加注释
g = g.annotate(stats.pearsonr)
# 保存图片
g.savefig('JointGrid.png')

python数据可视化: 使用seaborn(下)

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-12-04
  • 2022-12-23
  • 2021-06-20
  • 2022-12-23
猜你喜欢
  • 2021-06-26
  • 2022-03-07
  • 2021-09-28
相关资源
相似解决方案