【问题标题】:Changing properties in Seaborn displot更改 Seaborn displot 中的属性
【发布时间】:2021-01-26 17:54:28
【问题描述】:

这看起来是一项非常简单的任务,但我找不到正确的解决方案。 我确实生成了 10 个集合,每个集合包含 100 个样本,并将它们打包到 pandas.DataFrame 中,并为每一列分配索引号。

如何绘制所有 10 条线:same color='b' for all, set alpha=0.5, linewidth=1.0 ?

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
import random


sns.set_style("darkgrid")
sns.set_context("talk")
SEED = 202107
np.random.seed(SEED)
random.seed(SEED)


Num = 10
val = [np.random.randn() for _ in range(Num)]
my_data = [mu + np.random.randn(100) for mu in val]

df = pd.DataFrame()
for index in range(Num):
    name = str(index)
    df[name] = my_data[index][:]

sns.displot(df, kind='kde', legend=False)


plt.show()

【问题讨论】:

    标签: python dataframe seaborn normal-distribution


    【解决方案1】:

    答案需要意识到在wide-form mode 中,displot 将列维度分配给hue 变量。因此,您可以通过palette 参数控制颜色,使所有内容成为一种颜色的最简单方法是传递具有正确长度的相同条目列表。其他属性可以通过传递给 plt.plot 的 matplotlib 关键字参数来控制:

    g = sns.displot(
        df, kind='kde', legend=False,
        palette=["C0"] * Num, linewidth=1
    )
    plt.setp(g.ax.lines, alpha=.5)
    

    似乎存在一个忽略 alpha= 的错误,您可以通过在绘图后修改艺术家(如上)或将调色板定义为 [mpl.colors.to_rgba("C0", alpha=.5)] * Num 来解决此问题。

    【讨论】:

    • 非常感谢!它做得很好。 alpha 属性不起作用。
    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2021-12-22
    • 2021-10-22
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多