当前位置:网站首页>Seaborn数据可视化
Seaborn数据可视化
2022-07-07 15:32:00 【En^_^Joy】
用Seaborn做数据可视化
Seaborn与Matplotlib
Matplotlib画图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
plt.figure()
x = np.linspace(0, 10, 500)
y = np.cumsum(np.random.randn(500, 6), 0)
plt.plot(x, y)
plt.legend('ABCDEF', ncol=2, loc='upper left')
# 显示图片
plt.show()
Seaborn
有许多高级的画图功能,而且可以改写Matplotlib
的默认参数,从而用简单的Matplotlib
获得更好的效果,可以用Seaborn
的set()
方法设置样式
其他代码和上面的一样,只是添加导入这个模块和使用set()
函数
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
sns.set()
plt.figure()
x = np.linspace(0, 10, 500)
y = np.cumsum(np.random.randn(500, 6), 0)
plt.plot(x, y)
plt.legend('ABCDEF', ncol=2, loc='upper left')
# 显示图片
plt.show()
Seaborn图形介绍
很多图形用Matplotlib都可以实现,三用Seaborn会更方便
频次直方图、KDE和密度图
频次直方图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
sns.set()
plt.figure()
data = np.random.multivariate_normal([0, 0], [[5, 2], [2, 2]], size=2000)
data = pd.DataFrame(data, columns=['x', 'y'])
for col in 'xy':
plt.hist(data[col], alpha=0.5)
# 显示图片
plt.show()
用KDE获取变量分布的平滑评估,通过sns.kdeplot
实现
for col in 'xy':
sns.kdeplot(data[col], shade=True)
用distplot
可以让频次直方图与KDE结合起来
for col in 'xy':
sns.distplot(data[col])
如果想kdeplot输入的是二维数据集,那么可以获得一个二维数可视化
sns.kdeplot(data['x'],data['y'])
用sns.jointplot可以同时看到两个变量的联合分布与单变量的独立分布,在这里使用白色背景
with sns.axes_style('white'):
sns.jointplot("x", "y", data, kind='kde')
with sns.axes_style('white'):
sns.jointplot("x", "y", data, kind='hex')
矩阵图
下面是四个变量之间关系的矩阵图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
sns.set()
plt.figure()
iris = sns.load_dataset("iris")
print(iris.head())
''' sepal_length sepal_width petal_length petal_width species 0 5.1 3.5 1.4 0.2 setosa 1 4.9 3.0 1.4 0.2 setosa 2 4.7 3.2 1.3 0.2 setosa 3 4.6 3.1 1.5 0.2 setosa 4 5.0 3.6 1.4 0.2 setosa '''
sns.pairplot(iris, hue='species', size=2.5)
# 显示图片
plt.show()
分面频次直方图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
sns.set()
plt.figure()
tips = sns.load_dataset("tips")
print(tips)
''' total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 .. ... ... ... ... ... ... ... 239 29.03 5.92 Male No Sat Dinner 3 240 27.18 2.00 Female Yes Sat Dinner 2 241 22.67 2.00 Male Yes Sat Dinner 2 242 17.82 1.75 Male No Sat Dinner 2 243 18.78 3.00 Female No Thur Dinner 2 [244 rows x 7 columns] '''
tips['tip_pct'] = 100*tips['tip']/tips['total_bill']
grid = sns.FacetGrid(tips, row="sex", col="time", margin_titles=True)
grid.map(plt.hist, "tip_pct", bins=np.linspace(1, 40, 15))
# 显示图片
plt.show()
因子图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
sns.set()
plt.figure()
tips = sns.load_dataset("tips")
tips['tip_pct'] = 100*tips['tip']/tips['total_bill']
with sns.axes_style(style='ticks'):
g = sns.factorplot("day", "total_bill", "sex", data=tips, kind="box")
g.set_axis_labels("day", "Total Bill")
# 显示图片
plt.show()
联合分布
with sns.axes_style('white'):
sns.jointplot("total_bill", "tip", data=tips, kind='hex')
with sns.axes_style('white'):
sns.jointplot("total_bill", "tip", data=tips, kind='reg')
条形图
:sns.factorplot
画条形图
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
sns.set()
plt.figure()
planets = sns.load_dataset('planets')
print(planets.head())
''' method number orbital_period mass distance year 0 Radial Velocity 1 269.300 7.10 77.40 2006 1 Radial Velocity 1 874.774 2.21 56.95 2008 2 Radial Velocity 1 763.000 2.60 19.84 2011 3 Radial Velocity 1 326.030 19.40 110.62 2007 4 Radial Velocity 1 516.220 10.50 119.47 2009 '''
with sns.axes_style('white'):
g = sns.factorplot("year", data=planets, aspect=2, kind="count", color='steelblue')
g.set_xticklabels(step=5)
# 显示图片
plt.show()
with sns.axes_style('white'):
g = sns.factorplot("year", data=planets, aspect=4.0, kind="count", hue='method', order=range(2001, 2015))
g.set_ylabels('Number of Planets Discovered')
边栏推荐
- 掌握这个提升路径,面试资料分享
- Master this set of refined Android advanced interview questions analysis, oppoandroid interview questions
- LeetCode 300. 最长递增子序列 每日一题
- 01tire+ chain forward star +dfs+ greedy exercise one
- 如何快速检查钢网开口面积比是否符合 IPC7525
- Module VI
- 浅浅理解.net core的路由
- Personal notes of graphics (1)
- JS中null NaN undefined这三个值有什么区别
- OpenGL personal notes
猜你喜欢
随机推荐
Spark Tuning (III): persistence reduces secondary queries
LeetCode 1774. 最接近目标价格的甜点成本 每日一题
字节跳动Android金三银四解析,android面试题app
skimage学习(3)——Gamma 和 log对比度调整、直方图均衡、为灰度图像着色
[Android -- data storage] use SQLite to store data
Localstorage and sessionstorage
logback.xml配置不同级别日志,设置彩色输出
预售17.9万,恒驰5能不能火?产品力在线,就看怎么卖
Find tags in prefab in unity editing mode
深度监听 数组深度监听 watch
最新高频Android面试题目分享,带你一起探究Android事件分发机制
Vs2019 configuration matrix library eigen
LeetCode 120. 三角形最小路径和 每日一题
The difference and working principle between compiler and interpreter
模拟Servlet的本质
Module VI
LeetCode 1654. 到家的最少跳跃次数 每日一题
LeetCode 403. 青蛙过河 每日一题
1亿单身男女“在线相亲”,撑起130亿IPO
掌握这套精编Android高级面试题解析,oppoAndroid面试题