seaborn 简介
seanborn 是 Python 的另外一个常用工具包,它基于 matplotlib,但画出的图形更加美观些,并且与 Pandas 的数据类型结合地较好。
# Import seaborn
import seaborn as sns
import matplotlib.pyplot as plt
# Apply the default theme
sns.set_theme() # 应用 seaborn 的默认主题
x = np.arange(0, 10,0.5)
y = np.sin(x)
plt.plot(x, y)
plt.show()
可以看出,应用 seaborn 的主题后,图形的配色变化了些。下面我们导入 seaborn 自带的数据集 tips。
# Load an example dataset
tips = sns.load_dataset("tips") # seaborn 自带的数据集,国内导入网速慢可能出错,可以把数据集提前从 github 上下载到电脑里
print(tips)
type(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]
pandas.core.frame.DataFrame
可以看出,tips 数据集载入后,是 Pandas 的 DataFrame 类型,seaborn 可以方便地针对 DataFrame 数据集画图。下面,我们以其中的relplot
函数为例,讲解如何使用 seanborn 画图。relplot
函数的基本用法如下:
relplot(data=None, x=None, y=None, row=None, col=None,hue=None, kind='scatter', **kwargs) | |
---|---|
data | 输入的数据,常见的数据类型,例如 Pandas 或 Numpy 中的数据 |
x | 横坐标数据 |
y | 纵坐标数据 |
row/col | 将数据按行或列划分为子数据集,生成多个子图 |
hue | 颜色,可以是数值类型或类别数据 |
kind | 图像类型,'line' 或 ‘scatter' |
**kwargs | 其他参数,例如 style,sizes 等 |
sns.relplot(
data = tips,
x = "total_bill", y="tip",
hue = 'smoker', # 按是否吸烟生成不同的颜色
col = 'sex', # 按不同性别生成子图
style = 'smoker' # 按是否吸烟生成不同的点形
)
plt.show()
生成线图时,相同横坐标的数据将会合并,并且,图像会显示均值以及 95% 的置信区间:
sns.relplot(
data = tips,
x = "day", y="tip",
hue = 'smoker', # 按是否吸烟生成不同的颜色
kind = 'line'
)
plt.show()
seaborn 自带一些函数生成常见的图形,例如barplot
生成条形图,histplot
生成直方图,boxplot
生成箱线图:
sns.barplot(
data = tips,
x = "day", y="tip",
hue = 'smoker', # 按是否吸烟生成不同的颜色
)
plt.show()
sns.histplot(
data = tips,
x = "tip",
)
plt.show()
sns.boxplot(
data = tips,
x = "day",
y = "tip",
)
plt.show()
seaborn 还有其他一些画图函数,例如heatmap
生成热力图,violinplot
生成小提琴图,限于篇幅,本文不再赘述,有兴趣的读者可以查阅官方文档。