在seaborn barplot中按列值定义色调

时间:2016-10-05 03:28:04

标签: matplotlib seaborn

我希望列的颜色由它们在x轴上的值确定,例如在x轴上具有相同值的条应具有分配给它们的相同颜色。

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

df = pd.DataFrame(index=['A','B','C','D','E','F'],data={'col1':np.array([2.3423,4.435,9.234,9.234,2.456,6.435])})
ax = sns.barplot(x='col1', y=df.index.values, data=df,palette='magma')

这是默认设置目前的样子。我认为这样做有一种简单优雅的方式,但对任何解决方案都很感兴趣。

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个解决方案:

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

df = pd.DataFrame(index=['A','B','C','D','E','F'],
  data={'col1':np.array([2.3423,4.435,9.234,9.234,2.456,6.435])})
ax = sns.barplot(x='col1', y=df.index.values, data=df,
  palette=mpl.cm.magma(df['col1']*.1))

注意:mpl.cm.magmaColormap实例,用于将数据值(浮点数)从区间[0,1]转换为Colormap表示的颜色。如果你想要"自动缩放"在您的数据值中,您可以在palette=mpl.cm.ScalarMappable(cmap='magma').to_rgba(df['col1'])调用中使用sns.barplot()

此处输出:barplot