2016-10-05 4 views
2

Я хотел бы, чтобы цвет столбцов определялся их значением по оси 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

+0

Пробовали ли вы указать оттенок? Aka добавляет 'hue = 'col1'' в качестве аргумента в' sns.barplot'. – lanery

+0

, который не фиксирует его – themachinist

ответ

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.magma является Colormap экземпляром и используется для преобразования значений данных (поплавки) из интервала [0, 1] цветы, что Colormap представляет. Если вы хотите «автоматическое масштабирование» ваших значений данных, вы можете использовать palette=mpl.cm.ScalarMappable(cmap='magma').to_rgba(df['col1']) вместо этого в вызове sns.barplot().

Вот вывод: barplot

+0

Вы должны использовать объект matplotlib normalize, чтобы избежать указания здесь скалярного коэффициента вручную. – mwaskom

+0

@mwaskom, параметр «ScalarMappable», который я предложил в своей заметке, автоматически использует объект «Нормализовать», см. [Docs] (http://matplotlib.org/api/cm_api.html#matplotlib.cm.ScalarMappable). Тем не менее, цвета выглядели красивее в ручной заданной версии. :) –

+0

К сожалению, пропустил абзац после кода, извините! – mwaskom