Questo è un trucco completo, ma dovrebbe funzionare per il tuo scenario.
Fondamentalmente, è possibile definire un nuovo modello di tratteggio che diventi meno denso più lunga è la stringa di input. Sono andato avanti e adattato il modello HorizontalHatch
per voi (si noti l'utilizzo del carattere di sottolineatura):
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
Devi quindi aggiungerlo alla lista dei modelli di tratteggio disponibili:
matplotlib.hatch._hatch_types.append(CustomHorizontalHatch)
nel codice tracciato è ora possibile utilizzare il modello definito:
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)
Tenete a mente che questa non è una soluzione molto elegante e potrebbe rompere in qualsiasi momento nelle versioni future. Anche il mio codice di pattern è solo un attacco rapido e potresti voler migliorare. Io eredito da HorizontalHatch
ma per maggiore flessibilità lo svilupperesti su HatchPatternBase
.
È possibile aggiungere spazi bianchi al tratteggio? – TryPyPy