Это полный взлом, но он должен работать для вашего сценария.
По сути, вы можете определить новый шаблон штриховки, который становится менее плотным, чем длиннее входная строка. Я пошел вперед и адаптировал шаблон HorizontalHatch
для вас (обратите внимание на использование символа подчеркивания):
class CustomHorizontalHatch(matplotlib.hatch.HorizontalHatch):
def __init__(self, hatch, density):
char_count = hatch.count('_')
if char_count > 0:
self.num_lines = int((1.0 / char_count) * density)
else:
self.num_lines = 0
self.num_vertices = self.num_lines * 2
Затем необходимо добавить его в список доступных образцов штриховки:
matplotlib.hatch._hatch_types.append(CustomHorizontalHatch)
В вашем коде для печати теперь вы можете использовать определенный шаблон:
kwargs = {'hatch':'_'} # same as '-'
rects2 = ax.bar(theta, day7, width,fill=False, align='edge', alpha=1, **kwargs)
kwargs = {'hatch':'__'} # less dense version
rects1 = ax.bar(theta, day1, width,fill=False, align='edge', alpha=1, **kwargs)
Имейте в виду, что это не очень элегантное решение и может в любой момент сломаться в будущих версиях. Кроме того, мой код шаблона - это просто быстрый взлом, и вы можете улучшить его. Я наследую от HorizontalHatch
, но для большей гибкости вы бы использовали HatchPatternBase
.