我是靠谱客的博主 知性蜜蜂,最近开发中收集的这篇文章主要介绍python可视化之seaborn模块1. 整体风格设置2. 调色板3. 单变量分析绘图4. 回归分析绘图5. 多变量分析绘图6. 分类属性绘图7. facetgrid使用8. 热度图绘制9. 实际操作记录,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 1. 整体风格设置
- 2. 调色板
- 3. 单变量分析绘图
- 4. 回归分析绘图
- 5. 多变量分析绘图
- 6. 分类属性绘图
- 7. facetgrid使用
- 8. 热度图绘制
- 9. 实际操作记录
- 9.1 按特征列绘制直方分布图
安装seaborn:
pip3 install seaborn
1. 整体风格设置
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
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)
plt.show()
sinplot()
sns.set() # 使用seaborn默认参数组合
sinplot() # 风格会发生改变
# 有五种主题风格
# darkgrid whitegrid dark white ticks
sns.set_style("darkgrid")
data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
sns.boxplot(data=data)
2. 调色板
- 分类色板
current_palette = sns.color_palette()
sns.palplot(current_palette)
# 六种默认循环主题色:deep muted pastel bright dark colorbind
- 圆形画板
sns.palplot(sns.color_palette("hls", 8)) # hls八种颜色空间
data = np.random.normal(size=(20, 8)) + np.arange(8) / 2
sns.boxplot(data=data, palette=sns.color_palette("hls", 8))
# 属性:l亮度 s饱和度
# 对比色绘制
sns.boxplot(data=data, palette=sns.color_palette("Paired", 8))
- xkcd颜色来命名颜色
plt.plot([0, 1],[0, 1], sns.xkcd_rgb["pale red"], lw=3)
- 连续色板
# 由浅到深
sns.palplot(sns.color_palette("Blues"))
# 由深到浅
sns.palplot(sns.color_palette("BuGn_r"))
- cubehelix_palette()调色板
色调线性变化:
sns.palplot(sns.color_palette("cubehelix", 8))
sns.palplot(sns.cubehelix_palette(8, start=5, rot=-.75))
sns.palplot(sns.cubehelix_palette(8, start=.75, rot=.150))
- 调用定制连续调色板
sns.palplot(sns.light_palette("green"))
sns.palplot(sns.dark_palette("green"))
3. 单变量分析绘图
from scipy import stats, integrate
x = np.random.normal(size=100)
# 自动设置轴
sns.histplot(x, kde=False)
# 指定bins大小
sns.histplot(x, bins=20, kde=False)
# 查看拟合曲线
sns.distplot(x, bins=20, kde=False, fit=stats.gamma)
分析特征和特征之间的联系:
import pandas as pd
mean, cov = [0, 1], [(1, .5), (.5, 1)]
data = np.random.multivariate_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=["x", "y"])
# 自身分布情况+散点图
sns.jointplot(x="x", y="y", data=df)
# hex有区分度的散点图
x, y = np.random.multivariate_normal(mean, cov, 1000).T
with sns.axes_style("white"):
sns.jointplot(x=x, y=y, kind="hex", color="k")
4. 回归分析绘图
seaborn数据集可能会无法加载,自己去官方github把它下载下来:
seaborn-data
并把下载下来的文件放入user/name/文件夹下就可以直接load。
iris = sns.load_dataset("iris")
sns.pairplot(iris)
import random
sns.set(color_codes=True)
np,random.seed(sum(map(ord, "regression")))
tips = sns.load_dataset("tips")
print(tips.head())
# 绘制双特征total_bill和tip回归关系
sns.regplot(x="total_bill", y="tip", data=tips)
sns.regplot(x="size", y="tip", data=tips)
# 加入抖动
sns.regplot(x="size", y="tip", data=tips, x_jitter=.05)
5. 多变量分析绘图
np.random.seed(sum(map(ord, "categorical")))
titanic = sns.load_dataset("titanic")
tips = sns.load_dataset("tips")
iris = sns.load_dataset("iris")
# 散点图total_bill随时间变化
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)
# 散点图total_bill随时间变化, 像一棵树
sns.swarmplot(x="day", y="total_bill", data=tips)
sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips)
sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
# 小提琴图
sns.violinplot(x="day", y="total_bill", hue="time", data=tips)
sns.violinplot(x="day", y="total_bill", hue="sex", data=tips, split=True)
6. 分类属性绘图
sns.barplot(x="sex", y="survived", hue="class", data=titanic)
sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
sns.poiintplot(x="class", y="survived", hue="sex", data=titanic, palette={"male":"g", "female":"m"}, markers=["^", "o"], linestyles=["-", "--"])
# 默认折线图
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips)
# 条形图
sns.factorplot(x="day", y="total_bill", hue="smoker", data=tips, kind="bar")
7. facetgrid使用
g = sns.FacetGrid(tips, col="time")
g = sns.FacetGrid(tips, col="time")
g.map(plt.hist, "tip")
g = sns.FacetGrid(tips, col="sex", hue="smoker")
g.map(plt.scatter, "total_bill", "tip", alpha=.7)
g.add_legend()
with sns.axes_style("white"):
g = sns.FacetGrid(tips, row="sex", col="smoker", margin_titles=True, size=2.5)
g.map(plt.scatter, "total_bill", "tip")
g.set_axis_labels("Total bill", "Tip")
g.set(xticks=[10, 30, 50], yticks=[2, 6, 10])
g.fig.subplots_adjust(wspace=.02, hspace=.02)
# 所有特征的对比
g = sns.PairGrid(iris, hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()
# 取其中某个两个特征的对比
g = sns.PairGrid(iris, vars=["sepal_length", "sepal_width"], hue="species")
g.map(plt.scatter)
g.add_legend()
8. 热度图绘制
sns.set()
uniform_data = np.random.rand(3, 3)
heatmap = sns.heatmap(uniform_data)
# 指定取值范围
heatmap = sns.heatmap(uniform_data, vmin=0.2, vmax=0.5)
# 指定中心值
heatmap = sns.heatmap(uniform_data, center=0)
# 指定特征
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
print(flights)
ax = sns.heatmap(flights)
# 显示格子的值
ax = sns.heatmap(flights, annot=True, fmt='d')
# 加间隔
ax = sns.heatmap(flights, linewidth=5)
# 换配色
ax = sns.heatmap(flights, cmap="Blues")
9. 实际操作记录
9.1 按特征列绘制直方分布图
一种是多图绘制的方式:
import pandas as pd
import seaborn as sns
import matplotlib as plt
# 取自制数据集,数据集为DataFrame结构
data = pd.read_csv("数据集路径")
# row选择要进行分类的类别列,一般是数据集的target,因为是要对数据集的特征分布进行查看
g = sns.FacetGrid(samples, row="label")
g.map(plt.hist, "要查看分布的特征列名", color='#68B88E')
g.fig.set_size_inches(13, 15)
sns.set(style='whitegrid', font_scale=1.5)
plt.show()
一种是单图绘制的方式:
sns.histplot(data=samples, x="framelayout_count", hue="label", multiple="layer")
plt.show()
plt.clf()
最后
以上就是知性蜜蜂为你收集整理的python可视化之seaborn模块1. 整体风格设置2. 调色板3. 单变量分析绘图4. 回归分析绘图5. 多变量分析绘图6. 分类属性绘图7. facetgrid使用8. 热度图绘制9. 实际操作记录的全部内容,希望文章能够帮你解决python可视化之seaborn模块1. 整体风格设置2. 调色板3. 单变量分析绘图4. 回归分析绘图5. 多变量分析绘图6. 分类属性绘图7. facetgrid使用8. 热度图绘制9. 实际操作记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复