【小睿的ML之路】Seaborn风格细节设置

发布时间 2023-09-19 23:35:28作者: 郭小睿
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
sns.set_style("whitegrid") # 设置Seaborn默认样式

# 生成随机数据
data = np.random.normal(size=(20,6)) + np.arange(6)/2
print(data)
[[-5.46439599e-01 -1.24698492e+00  1.78233049e+00  5.19146198e-01
   3.05322231e+00  3.87177028e+00]
 [-1.31831020e+00  3.97896682e-01  1.43300384e+00  2.67360377e+00
   3.22782244e+00  8.80328060e-01]
 [-7.47859533e-01 -3.94862649e-01  1.31269969e+00  2.75391045e+00
   1.38233095e+00  2.88392887e+00]
 [-1.02238507e+00  4.89035906e-01  2.16909687e+00  2.11592610e+00
   1.96070041e+00  1.46308582e+00]
 [ 8.47933576e-01  1.88671289e-01  1.47579692e+00  1.12933860e+00
   3.44336001e+00  3.12024773e+00]
 [ 1.15201813e+00 -1.14954550e+00  2.08015192e+00  2.82526580e-01
   2.58403480e+00  1.48635598e+00]
 [ 2.23049282e-01  2.31496832e+00  8.89974282e-01  2.32855350e+00
   2.69471154e+00  2.26849168e+00]
 [ 8.21390550e-01 -1.82994963e-01  1.41640751e+00  1.60452892e+00
   1.91936472e+00 -6.85477792e-01]
 [ 6.54260306e-01  5.78832861e-01  4.12279224e-01  9.16784787e-01
   2.30068143e+00  1.61471998e+00]
 [-8.41233276e-01 -6.63528026e-01  1.05766661e+00  2.38320292e+00
   3.11826598e+00  1.88724351e+00]
 [ 6.91272312e-01  6.64884954e-01  1.63449998e+00  2.05939665e+00
   7.60944412e-01  1.88914506e+00]
 [ 4.32562833e-01  1.11174469e+00  1.90496166e-01  4.36871728e+00
   1.39737521e+00  1.70442280e+00]
 [ 6.80295339e-01 -1.22974230e-03  1.14647137e+00  2.76618083e+00
   2.21841688e+00  2.16630619e+00]
 [-2.12288645e+00  1.46001699e+00  2.26888012e+00  2.47165902e+00
  -3.46708717e-01  5.00232042e+00]
 [ 4.26367790e-01  5.70002339e-01  2.54030610e+00  1.86653843e+00
   5.77669764e-01  3.32269187e+00]
 [-2.47090025e+00  3.39792804e-01  4.78462454e-01  2.25596048e+00
   2.45924520e+00  2.93096834e+00]
 [-2.57907083e-01  2.81525009e-02  1.21269356e+00  2.78611267e+00
   1.36681450e+00  2.49482261e+00]
 [ 2.94493362e-01 -7.14256277e-01  1.16416619e+00  3.66511884e+00
   1.11155570e+00  2.56529996e+00]
 [-1.43889136e+00  3.09609913e+00  5.58608643e-02  1.53645507e+00
   2.19300809e+00  7.96699026e-01]
 [ 1.49769951e+00 -8.54313392e-01 -1.65242446e+00  2.66162843e+00
   2.21905049e+00  2.54737984e+00]]
# 绘制小提琴图
sns.violinplot(data)
sns.despine(offset=30,left=True)
plt.show()

def sinplot(flip=1): # 调用函数,flip参数可以控制曲线的翻转
    x = np.linspace(0,14,100) #在0-14上找到100个点
    for i in range(1,7):
        plt.plot(x, np.sin(x+i *.5) * (7-i) * flip) 

        
with sns.axes_style('darkgrid'):
    plt.subplot(2,1,1)
    sinplot()
    
plt.subplot(2,1,2)
sinplot(-1)

这段代码定义了一个名为 sinplot 的函数,该函数用于生成正弦曲线图。然后,在不同的子图中调用 sinplot 函数,可以通过 flip 参数控制曲线的翻转效果。

解释和运行代码的步骤如下:

  1. 定义了一个名为 sinplot 的函数,可以通过 flip 参数控制正弦曲线的翻转方向。

  2. 使用 sns.axes_style('darkgrid') 设置 Seaborn 的样式为 "darkgrid",这样图形的背景将呈现深色网格。

  3. 在一个 2x1 的子图布局中,调用 sinplot() 函数生成正弦曲线图,并将曲线翻转。

  4. 在第二个子图中再次调用 sinplot() 函数,翻转曲线方向。

这段代码生成了一个 2x1 的子图布局,分别展示了正弦曲线和翻转后的正弦曲线。