Как сделать вывод штрихов с помощью pandas?
Я пытаюсь добиться дифференциации по шаблону штриховки вместо цвета (просто). Как это сделать, используя pandas?
Это возможно в matplotlib, передав необязательный аргумент hatch
, как обсуждалось здесь. Я знаю, что также могу передать эту опцию pandas plot
, но я не знаю, как сказать ей использовать другой шаблон штриховки для каждого столбца DataFrame
.
df = pd.DataFrame(rand(10, 4), columns=['a', 'b', 'c', 'd'])
df.plot(kind='bar', hatch='/');
![enter image description here]()
Для цветов существует опция colormap
, описанная здесь. Есть ли что-то подобное для вылупления? Или я могу установить его вручную, изменив объект Axes
, возвращенный plot
?
Ответы
Ответ 1
Это своего рода хакерство, но оно работает:
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]()
Ответ 2
Этот код позволяет вам немного больше свободы при определении шаблонов, поэтому вы можете иметь "//" и т.д.
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)