Seaborn KDE与hu

2024-09-24 22:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

正如标题所提到的,我试图创建4个matplotlib子图,在每个子图中,我想根据数据帧中的一列绘制一个KDE绘图色调。我找到了一种“有点”这样做的方法,代码如下:

ScoreDiffMinus1 = ScoreMovements.loc[ScoreMovements['ScoreDifference'] == -1]
ScoreDiffMinus2 = ScoreMovements.loc[ScoreMovements['ScoreDifference'] == -2]
ScoreDiffMinus3 = ScoreMovements.loc[ScoreMovements['ScoreDifference'] == -3]
ScoreDiffMinus4 = ScoreMovements.loc[ScoreMovements['ScoreDifference'] == -4]

fg, ax = plt.subplots(2,2, figsize = (20,12.5), sharex=True, sharey=True)

Face1 = sns.FacetGrid(ScoreDiffMinus1, hue="Product")
G1 = Face1.map(sns.kdeplot, 'DateDifference', ax = ax[0,0])

Face2 = sns.FacetGrid(ScoreDiffMinus2, hue="Product")
G2 = Face2.map(sns.kdeplot, 'DateDifference', ax = ax[0,1])

Face3 = sns.FacetGrid(ScoreDiffMinus3, hue="Product")
G3 = Face3.map(sns.kdeplot, 'DateDifference', ax = ax[1,0])

Face4 = sns.FacetGrid(ScoreDiffMinus4, hue="Product")
G4 = Face4.map(sns.kdeplot, 'DateDifference', ax = ax[1,1])

这种方法的问题是,我同时运行了FacetGrid和Matplotlib子批,这意味着我有4个图表,下面我有4个来自FacetGrid的空图表。这也意味着我不能像运行一个简单的KDE绘图那样设置xlabel、title等。在

有更好的方法吗?我觉得我错过了一些显而易见的东西,但上面的方法对我来说并不管用。在

谢谢


Tags: 方法绘图mapproductaxhuelocsns
1条回答
网友
1楼 · 发布于 2024-09-24 22:27:10

下面呢

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

p = np.random.choice(["Fan", "Table", "Ball"], size=100)
sd = np.random.randint(-4,0,size=100)
dd = np.random.randint(0,40,size=100)
df = pd.DataFrame({'ScoreDifference': sd ,
                   'DateDifference':  dd ,
                   "Product": p})



grid = sns.FacetGrid(df, col='ScoreDifference', hue="Product", col_order=range(-4,0)[::-1])
grid.map(sns.kdeplot, 'DateDifference')
grid.add_legend()

plt.show()

enter image description here

相关问题 更多 >