当前位置: 首页 > 工具软件 > sns4j > 使用案例 >

plt sns绘图学习笔记

权承
2023-12-01

颜色表:

palette = ['#302c36', '#037d97', '#E4591E', '#C09741',
           '#EC5B6D', '#90A6B1', '#6ca957', '#D8E3E2']

子图构建:

fig, ax = plt.subplots(n_rows, n_cols, figsize=(20, n_rows*4))
ax = ax.flatten()  # 将ax由n*m的Axes组展平成1*nm的Axes组 拉平后方便单个变量直接遍历

ax[i].set_title(f'{column} Distribution') # 给子图写标题
ax[i].set_xlabel(None) # 是否设置子图的x轴名称

kdeplot(核密度估计图):

用来估计未知的密度函数,属于非参数检验方法之一。通过核密度估计图可以比较直观的看出数据样本本身的分布特征。

sns.kdeplot(
        train[column], label='Train',
        ax=ax[i], color=palette[0]  # 使用ax = ax.flatten()将ax拉平了 否则应使用ax[i, j]来进行定位
    )

distplot & histplot:

集合了matplotlib的hist()与核函数估计kdeplot的功能,增加了rugplot分布观测条显示与利用scipy库fit拟合参数分布的新颖用途。

sns.distplot(x,ax=axes[0]) # 直方图与密度分布图都显示
sns.distplot(x,hist=False,ax=axes[1]) # 只显示密度分布
sns.distplot(x,kde=False,ax=axes[2]) # 只显示直方图

sns.histplot(
        data=train,
        x="cost", 
        hue=ft, # 绘制分组直方图 值是对应数据的列名
        multiple="stack", # 分组直方图的展示形式 这里是堆叠
        palette=palette, # 调色盘
        edgecolor=".3",
        linewidth=.5,
        log_scale=True,
        ax=ax[i],
    )

 相关性热度图:

def plot_correlation_heatmap(df: pd.core.frame.DataFrame, title_name: str='Train correlation') -> None:
    """Draws the correlation heatmap plot.
    
    Args:
        df: train or test dataframes
        title_name: 'Train' or 'Test' (default 'Train correlation')
        
    Returns:
        subplots of size (len(col_list), 2)
    """

    corr = df.corr()
    fig, axes = plt.subplots(figsize=(20, 15))
    mask = np.zeros_like(corr)  # 获得一个跟corr一样大小的全零ndarray
    mask[np.triu_indices_from(mask)] = True # 获得上三角矩阵索引 为了画热度图时只画下三角 不重复画上三角
    sns.heatmap(corr, mask=mask, linewidths=.5, cmap=palette[5:][::-2] + palette[1:3], annot=True)
    plt.title(title_name)
    plt.show()

 类似资料: