Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于条件在Seaborn中绘制多色密度图_Python_Data Visualization_Seaborn - Fatal编程技术网

Python 基于条件在Seaborn中绘制多色密度图

Python 基于条件在Seaborn中绘制多色密度图,python,data-visualization,seaborn,Python,Data Visualization,Seaborn,我试图绘制一个内核密度图,在某一点上改变颜色 我有一个从-3到3的连续变量,希望0以下的数据显示为蓝线,阴影区域显示为红色,0以上的数据显示为红色。我尝试创建一个列表或一系列颜色,对应于数据中的每个点,但Seaborn的kdeplotcolor选项似乎不允许使用数组。我还尝试将数据分组到0以上和0以下,但这绘制了两个明显不同的分布,其中我只需要一个 import pandas as pd import numpy as np import matplotlib import matplotlib

我试图绘制一个内核密度图,在某一点上改变颜色

我有一个从-3到3的连续变量,希望0以下的数据显示为蓝线,阴影区域显示为红色,0以上的数据显示为红色。我尝试创建一个列表或一系列颜色,对应于数据中的每个点,但Seaborn的
kdeplot
color选项似乎不允许使用数组。我还尝试将数据分组到0以上和0以下,但这绘制了两个明显不同的分布,其中我只需要一个

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

sample = np.random.uniform(low=-3.0, high=3.0, size=(100,))
df = pd.DataFrame(sample, columns = ['scores'])

def plot_group(group):
    global ax
    c = 'b' if (group['scores'] < 0).all() else 'r'
    sns.kdeplot(group['scores'], color = c, shade = True)

colors = np.where(df['scores'] < 0, 'b', 'r')
df.groupby(colors).apply(plot_group)
sns.despine(top = True, right = True, left = True)
plt.setp(axes, yticks=[])
将熊猫作为pd导入
将numpy作为np导入
导入matplotlib
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
样本=np.random.uniform(低=3.0,高=3.0,大小=(100,))
df=pd.DataFrame(示例,列=['scores']))
def plot_组(组):
全球ax
c='b'如果(组['scores']<0)。所有()其他'r'
sns.kdeplot(组['scores'],颜色=c,阴影=True)
颜色=np。其中(df['scores']<0,'b','r')
df.groupby(颜色).apply(绘图组)
轻视(顶部=正确,右侧=正确,左侧=正确)
plt.setp(轴,yticks=[])
我期望一个单一的连续分布,在零附近有不同的颜色,但我得到的是两个独立的图。

我用条形图做了类似的事情,我需要用最大值将条形图涂成红色,就是这样做的

import seaborn as sns

colors = ['grey' if (x < max(values)) else 'red' for x in values ]
sns.barplot(x=labels, y=values, palette=colors)
导入seaborn作为sns
颜色=[“灰色”如果(x
Seaborn不为此提供任何选项。您可以计算数据的kde并将其绘制为。