簡體   English   中英

根據條件在 Seaborn 中繪制多色密度圖

[英]Plotting a multicolored density plot in Seaborn based on a condition

我正在嘗試繪制在某個點改變顏色的內核密度圖。

我有一個范圍從 -3 到 3 的連續變量,並希望低於 0 的數據顯示為藍線和陰影區域,高於 0 的數據顯示為紅色。 我嘗試創建與數據中每個點相對應的列表或一系列顏色,但 Seaborn 的kdeplot顏色選項似乎不允許使用數組。 我還嘗試將 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=[])

我期望在零附近顏色不同的單個連續分布,但我得到的是兩個單獨的圖。 這是我生成的錯誤輸出

我用條形圖做了類似的事情,我需要用最大的紅色給條形着色,這是這樣做的。

import seaborn as sns

colors = ['grey' if (x < max(values)) else 'red' for x in values ]
sns.barplot(x=labels, y=values, palette=colors)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM