Python 和 Seaborn

文章目录

Seaborn是一个流行的Python数据可视化库,它建立在Matplotlib基础之上,提供了更高级别的接口和更美观的默认样式,使得用户能够更容易地创建统计图形。Seaborn专注于统计数据的可视化,支持创建如散点图、折线图、柱状图、热图等多种统计图表,并且与Pandas数据结构紧密集成,便于数据分析和可视化。

python3 复制代码
import seaborn as sns

此外,Seaborn还有许多用于数据处理和可视化的函数,例如sns.load_dataset用于加载内置数据集,sns.scatterplotsns.lineplotsns.barplot等用于创建不同类型的图表,以及sns.heatmap用于创建热力图等。

1. 整体布局风格设置

使用 matplotlib 模块绘制。

python3 复制代码
import seaborn as sns
import numpy as np
import matplotlib as mpl
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*0.5)*(7 - i) * flip)
sinplot()
plt.show()

问:我们知道,matplotlib 绘图时需要调整非常多的参数实现图像控制,那么有没有什么好的办法可以不用这么麻烦呢?

答:使用 seaborn 预设主题就好了。

python3 复制代码
import seaborn as sns
import numpy as np
import matplotlib as mpl
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*0.5)*(7 - i) * flip)

sns.set() # 默认设置
sinplot()
plt.show()

5 种主题风格:

  • darkgrid
  • whitegrid
  • dark
  • white
  • ticks

风格设置语句

sns.set_style("whitegrid")

python3 复制代码
import seaborn as sns
import numpy as np
import matplotlib as mpl
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*0.5)*(7 - i) * flip)

sns.set_style("darkgrid")
sinplot()
plt.show()

设置图像距离坐标轴的位置

sns.despine(offset=50)

python3 复制代码
import seaborn as sns
import numpy as np
import matplotlib as mpl
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*0.5)*(7 - i) * flip)

sns.set_style("dark")
sinplot()
sns.despine(offset=50)
plt.show()

不同子图使用不同风格

python3 复制代码
import seaborn as sns
import numpy as np
import matplotlib as mpl
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*0.5)*(7 - i) * flip)

with sns.axes_style("darkgrid"):
    plt.subplot(211)
    sinplot()
plt.subplot(212)
sinplot(-1)
plt.show()

2. 调色板

  • color_palette() 能传入任何 Matplotlib 所支持的颜色。
  • color_palette() 不写参数则默认颜色。
  • set_palette() 设置所有图的颜色。

十个默认的颜色循环主题,如果不指定画图颜色,则默认循环使用这十种颜色。

问:如果只会 10 个颜色的英文单词,但是面对 10 以上分类情况怎么办?

答:使用圆形画板方式。

圆形画板

当需要十个以上的分类需要区分时,最简单的方法就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持光度和饱和度不变),这是大多数当需要使用比当前默认颜色循环中设置的颜色更多时的默认方案。

最常用的方法是使用 hls 的颜色空间,是 RGB 值的一个简单转换。

python3 复制代码
current_palette = sns.color_palette("hls", 20)
sns.palplot(current_palette)
plt.show()

如何使用这些颜色?

python3 复制代码
data = np.random.normal(size=(20, 12)) + np.arange(12)/2
sns.boxplot(data=data, palette=sns.color_palette('hls', 12))
plt.show()

3. 单变量分析图

直方图绘制

python3 复制代码
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "distributions")))
x = np.random.normal(size=100) # 数据
sns.displot(x, kde=False) # 绘制直方图,kde是否核密度估计,无需指定任何参数
plt.show()

指定 bins。

python3 复制代码
sns.set(color_codes=True)
np.random.seed(sum(map(ord, "distributions")))
x = np.random.normal(size=100) # 数据
sns.displot(x, kde=False) # 绘制直方图,kde是否核密度估计,无需指定任何参数
sns.displot(x, bins=20, kde=False) # 指定bins
plt.show()

问:两个变量之间的关系如何表现?

答:散点图。

根据均值和协方差生成数据。

python3 复制代码
mean, cov = [0, 1], [(1, 0.5), (0.5, 1)]
data = np.random.multinomial_normal(mean, cov, 200)
df = pd.DataFrame(data, columns=['x', 'y'])

观测两个变量之间的分布关系最好用散点图。

python3 复制代码
sns.set(color_codes=True)
# 均值和协方差
mean, cov = [0, 1], [(1, 0.5), (0.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) # 将散点图和x/y直方图均绘制出来
plt.show()

散点图中每个点的大小都一致,数据量较大时,堆叠在一起,存在弊端。

另一种表现方式------蜂窝图。

python3 复制代码
sns.set(color_codes=True)
# 均值和协方差
mean, cov = [0, 1], [(1, 0.5), (0.5, 1)]
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")
plt.show()
相关推荐
B站计算机毕业设计超人3 分钟前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
IT古董27 分钟前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
湫ccc1 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
hakesashou1 小时前
Python中常用的函数介绍
java·网络·python
菜鸟的人工智能之路1 小时前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗
菜鸟学Python1 小时前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
小白不太白9501 小时前
设计模式之 责任链模式
python·设计模式·责任链模式
喜欢猪猪1 小时前
Django:从入门到精通
后端·python·django
糖豆豆今天也要努力鸭1 小时前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
何大春2 小时前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式