Max*_*Max 4 python pandas seaborn
我正在尝试使用 Seaborn 将一维数据框呈现为水平条形图。我想使用冷暖调色板对条形进行着色以反映它们的大小和方向。
换句话说,我希望生成类似此处显示的第二个示例的内容(来自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')
Run Code Online (Sandbox Code Playgroud)
输出:
我希望当您从左到右(而不是从上到下)移动时它从蓝色变为红色。
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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |