python绘图库seaborn_Python绘图可视化——Seaborn实现

seaborn1.png

简介

虽然Matplotlib库已经能够完成大部分的绘图任务,但是有时候图表并不是非常好看,而Seaborn库提供了更加高级的接口和许多定制的主题,使作图更加美观。也就是说,它是对Matplotlib库的补充。

Matplotlib的作图效果

我们来看一个例子:

import numpy as np

import matplotlib.pyplot as plt

def plot_sin(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)

plot_sin()

plt.show()

1

2

3

4

5

6

7

8

9

10

importnumpyasnp

importmatplotlib.pyplotasplt

defplot_sin(flip=1):

x=np.linspace(0,14,100)

foriinrange(1,7):

plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)

plot_sin()

plt.show()

首先导入必要的库,然后定义一个函数用来画正弦函数,通过设置不同的偏移量,得到6条曲线。这是常规的Matplotlib作图方式,得到如下图形:

seaborn2.png

Seaborn的作图效果

通过以下代码引入Seaborn库:

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

def plot_sin(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()

plot_sin()

plt.show()

1

2

3

4

5

6

7

8

9

10

11

12

importnumpyasnp

importmatplotlib.pyplotasplt

importseabornassns

defplot_sin(flip=1):

x=np.linspace(0,14,100)

foriinrange(1,7):

plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)

sns.set()

plot_sin()

plt.show()

首先通过

importseabornassns 导入Seaborn库,在正常的画图步骤前,要通过

sns.set() 设置绘图风格。默认的

sns.set() 方法如下:

set(context="notebook", style="darkgrid", palette="deep", font="sans-serif", font_scale=1, color_codes=False, rc=None)

1

set(context="notebook",style="darkgrid",palette="deep",font="sans-serif",font_scale=1,color_codes=False,rc=None)

通过

context 参数设置图片的大小尺寸,通过

style 设置背景的风格,另外还有设置颜色的参数等。最终得到如下图:

seaborn3.png

Seaborn提供了5种预定义的主题:

darkgrid:灰色背景+白网格

whitegrid:白色背景+黑网格

dark:灰色背景

white:白色背景

ticks:坐标轴带刻度

使用Seaborn作图时,默认使用浅灰色背景与白色网格线。而要更改背景主题可以使用

set_style() 函数,或者在

set() 通过传入

style 参数,这两者是等价的。比如以下示例:

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

def plot_sin(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('whitegrid') # 等价于 sns.set(style='whitegrid')

plot_sin()

plt.show()

1

2

3

4

5

6

7

8

9

10

11

12

importnumpyasnp

importmatplotlib.pyplotasplt

importseabornassns

defplot_sin(flip=1):

x=np.linspace(0,14,100)

foriinrange(1,7):

plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)

sns.set_style('whitegrid')# 等价于 sns.set(style='whitegrid')

plot_sin()

plt.show()

在这里将背景的风格修改成白底黑网格,得到如下图形:

seaborn4.png

更改尺寸大小可以使用

set_context() 函数,或者在

set() 通过传入

context 参数。Seaborn中预定义的上下文有4种:

paper

notebook

talk

poster

默认使用的是notebook,这几种定义使得图片的size和粗细依次递增。具体通过以下代码查看效果:

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

def plot_sin(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)

plt.figure(figsize=(12, 8))

sns.set()

plt.subplot(221)

plot_sin()

sns.set(context='paper', style='whitegrid')

plt.subplot(222)

plot_sin()

sns.set(context='talk', style='dark')

plt.subplot(223)

plot_sin()

sns.set(context='poster', style='white')

plt.subplot(224)

plot_sin()

plt.show()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

importnumpyasnp

importmatplotlib.pyplotasplt

importseabornassns

defplot_sin(flip=1):

x=np.linspace(0,14,100)

foriinrange(1,7):

plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)

plt.figure(figsize=(12,8))

sns.set()

plt.subplot(221)

plot_sin()

sns.set(context='paper',style='whitegrid')

plt.subplot(222)

plot_sin()

sns.set(context='talk',style='dark')

plt.subplot(223)

plot_sin()

sns.set(context='poster',style='white')

plt.subplot(224)

plot_sin()

plt.show()

最终得到如下图片:

seaborn5-1024x782.png

sns的设置需要在画子图之前就定义好,如果放在

plt.subplot() 的后面就错了。并且可以看出图像曲线的线宽和坐标字体大小发生比较明显的变化。

Seaborn除了改变背景格式,画布大小,还有其他有意思的功能。比如以下的例子:

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

sns.set() # 使用默认设置

data = sns.load_dataset('flights') # 加载sns自带数据集

data = data.pivot('month', 'year', 'passengers')

sns.heatmap(data, annot=True, fmt='d', lw=0.5, cmap="YlGnBu")

plt.show()

1

2

3

4

5

6

7

8

9

importnumpyasnp

importmatplotlib.pyplotasplt

importseabornassns

sns.set()# 使用默认设置

data=sns.load_dataset('flights')# 加载sns自带数据集

data=data.pivot('month','year','passengers')

sns.heatmap(data,annot=True,fmt='d',lw=0.5,cmap="YlGnBu")

plt.show()

在这里调用了sns的

heatmap() 函数作热图,其中

annot 参数控制数值是否显示,

fmt 参数控制数值的格式,

lw 参数为线宽,

cmap 参数控制使用的颜色模式。最终得到如下图:

seaborn6.png

总结

在本文中简单介绍了一个高级的作图库Seaborn,讲解了如何简单地设置背景风格和图形风格。需要注意的是,Seaborn的设置必须在作图函数前就要定义好。该库能够做出更多漂亮、有趣的图形,如果有兴趣可以查看官网的文档和示例图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值