Matplotlib 通过seaborn条形图中的列值定义色调

Matplotlib 通过seaborn条形图中的列值定义色调,matplotlib,seaborn,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])}

我希望列的颜色由其在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')
这就是目前默认设置的情况。我认为有一种简单优雅的方法可以做到这一点,但对任何解决方案都感兴趣

这里有一个解决方案:

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.magma
是一个实例,用于将间隔[0,1]中的数据值(浮动)转换为
Colormap
表示的颜色。如果您想“自动缩放”数据值,可以在
sns.barplot()
调用中使用
palete=mpl.cm.ScalarMappable(cmap='magma').to_rgba(df['col1'])


这里是输出:

您是否尝试指定色调?又名添加
hue='col1'
作为
sns.barplot
的参数。这无法解决此问题。您应该使用matplotlib normalize对象,以避免在此处手动指定标量因子。@mwaskom,我在说明中建议的
scalarMapable
选项自动使用
normalize
对象,请参阅。不过,在手工指定的版本中,颜色看起来更漂亮。:)哎呀,代码后面的段落完全漏了,对不起!PS:Normalize基于
的版本应该是:
调色板=mpl.cm.magma(mpl.colors.Normalize()(df['col1'])
。因为有两种选择似乎就足够了,所以没有回答这个问题。