更改Seaborn应用调色板的轴

最高

我正在尝试使用Seaborn将一维数据框显示为水平条形图。我想使用coolwarm调色板来阴影条以反映其大小和方向。

换句话说,我希望生成类似于此处显示的第二个示例的内容(来自Seaborn网站),但是我想使其水平定向:

在此处输入图片说明

我已经成功地将图形横向翻转了,但是我似乎无法使调色板也沿水平轴应用。我的代码:

import pandas as pd, seaborn as sns

sns.set()
df = pd.DataFrame([7,-5,-2,1.5,-3],
                  index=['question 1','question 2','question 3','question 4','question 5'],
                  columns=['t'])
sns.barplot(data=    df,
            x=       't', 
            y=       df.index,
            palette= 'coolwarm') 

输出:

输出

我希望它从左到右(而不是从上到下)从蓝色变为红色。

认真的重要性

Seaborn不会执行任何真实的颜色映射。因此,如果需要这样做,则需要从外部进行。在下面,每个条根据其大小从颜色图中获取其颜色。

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

sns.set()
df = pd.DataFrame([7,-5,-2,1.5,-3],
                  index=['question 1','question 2','question 3','question 4','question 5'],
                  columns=['t'])

absmax = np.abs(df["t"].values).max()
norm = plt.Normalize(-absmax, absmax)
cmap = plt.get_cmap("coolwarm")
colors = cmap(norm(df["t"].values))
plt.barh("index", "t", data=df.reset_index(), color=colors)

plt.colorbar(plt.cm.ScalarMappable(norm, cmap))

plt.gca().invert_yaxis()
plt.tight_layout()
plt.show()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章