¿Cómo trazo barras sombreadas usando pandas?

Estoy tratando de lograr una diferenciación por patrón de sombreado en lugar de por (solo) color. ¿Cómo lo hago usando pandas?

Es posible en matplotlib, pasando el argumento opcional de hatch como se explica aquí . Sé que también puedo pasar esa opción a un plot pandas, pero no sé cómo decirle que use un patrón de sombreado diferente para cada columna de DataFrame .

 df = pd.DataFrame(rand(10, 4), columns=['a', 'b', 'c', 'd']) df.plot(kind='bar', hatch='/'); 

introduzca la descripción de la imagen aquí

Para los colores, existe la opción de colormap colores descrita aquí ¿Hay algo similar para incubar? ¿O tal vez puedo configurarlo manualmente modificando el objeto Axes devuelto por plot ?

Esto es una especie de hacky pero funciona:

 df = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd']) ax = plt.figure(figsize=(10, 6)).add_subplot(111) df.plot(ax=ax, kind='bar', legend=False) bars = ax.patches hatches = ''.join(h*len(df) for h in 'x/O.') for bar, hatch in zip(bars, hatches): bar.set_hatch(hatch) ax.legend(loc='center right', bbox_to_anchor=(1, 1), ncol=4) 

bar

Este código le permite un poco más de libertad al definir los patrones, por lo que puede tener ‘//’, etc.

 bars = ax.patches patterns =('-', '+', 'x','/','//','O','o','\\','\\\\') hatches = [p for p in patterns for i in range(len(df))] for bar, hatch in zip(bars, hatches): bar.set_hatch(hatch)