Seaborn 是由斯坦福大学提供的一个Python库,经常被用于在Python中制作更加赏心悦目的统计图形,它构建在Matplotlib之上,支持Numpy和Pandas的DataFrame类型,也支持来自于SciPy和SatasModels的统计结果,Seaborn模块是Matplotlib的极好的补充。
    Matplotlib的自动化程度非常高,掌握如何设置系统以获得一个具有吸引力的图表并不容易,为了优化Matplotlib图表的外观,Seaborn模块自带许多定制主题和高级接口。Seaborn模块可以用尽可能少的代码和参数绘制尽可能漂亮的图表。
    Pandas主要是用来进行数据探索而不是可视化,只有当可视化工作只需要调整少量参数时才用Pandas实现。Pandas 进行自定义可视化,实际上是用底层的Matplotlib进行绘图,需要对Matplotlib 有较深的了解。
    若画图时需要个性化修改一些图的属性时,用Seaborn更加合适。因为Seaborn提供了一些简单的API来直接可视化数据,不需要进行参数的理解。
    为了控制Matplotlib图表的外观,Seaborn模块自带许多定制的主题和高级的接口。Seaborn默认浅灰色背景与白色网络线,如图10.29所示。
    Seaborn应用set()函数通过设置参数可以设置背景,调色板等确定主题,其主要参数如下:

    1. set(context='notebook', style='darkgrid', palette='deep', font='sans-serif',
    2. font_scale=1, color_codes=True, rc=None)

    style :Seaborn中有五种可供选择的主题:darkgrid(灰色网格)、whitegrid(白色网格)、dark(黑色)、white(白色)和ticks(十字)。显示效果如图10.30所示。

    1. import matplotlib.pyplot as plt # 导入matplotlib库
    2. import numpy as np
    3. def sinplot(flip=1):
    4. x=np.linspace(0,14,100)
    5. for i in range (1,7):
    6. plt.plot(x,np.sin(x+i*.5)*(7-i)*flip)
    7. sinplot()
    8. plt.show()

    10.26.jpg
    Matplotlib绘图

    1. import seaborn as sns # 导入seaborn库
    2. sns.set() #用缺省参数确定主题
    3. sinplot()
    4. plt.show()

    10.27.jpg
    Seaborn缺省主题绘图
    context:绘制参数,其值为None或{paper, notebook, talk, poster}中的一种,与plotting_context()相同。缺省值为’notebook’。

    1. import matplotlib.pyplot as plt # 导入matplotlib库
    2. import seaborn as sns # 导入seaborn库
    3. import numpy as np
    4. def sinplot(flip=1):
    5. x=np.linspace(0,14,100)
    6. for i in range (1,7):
    7. plt.plot(x,np.sin(x+i*.5)*(7-i)*flip)
    8. plt.figure(figsize=(12, 8))
    9. sns.set(context='paper',style='darkgrid')
    10. plt.subplot(2, 2, 1)
    11. sinplot()
    12. plt.title('paper')
    13. sns.set(context='talk',style='whitegrid')
    14. plt.subplot(2, 2, 2)
    15. sinplot()
    16. plt.title('talk')
    17. sns.set(context='talk',style='dark')
    18. plt.subplot(2, 2, 3)
    19. sinplot()
    20. plt.title('poster')
    21. sns.set(context='notebook',style='ticks')
    22. plt.subplot(2, 2, 4)
    23. sinplot()
    24. plt.title('notebook')
    25. plt.show()

    image.png