gpt4 book ai didi

python - 更改 Seaborn 应用调色板的轴

转载 作者:行者123 更新时间:2023-11-28 22:09:35 24 4
gpt4 key购买 nike

我正在尝试使用 Seaborn 将一维数据框呈现为水平条形图。我想使用 coolwarm 调色板对条形图进行着色以反射(reflect)它们的大小和方向。

换句话说,我希望生成类似于此处显示的第二个示例的内容(来自 Seaborn site ),但我想将其水平放置:

enter image description here

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

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')

输出:

output

当您从左向右(而不是从上到下)移动时,我希望它从蓝色变为红色。

最佳答案

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()

enter image description here

关于python - 更改 Seaborn 应用调色板的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57601156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com