['green' if y > 0 else 'red' for y in y_values]
even though the order of construction and duration is not right, it can be revised with domain knowledge
to make 3 variables one(1) and use iteration with zip(dates, levels, names)
To stack bars one one another giving argument of "bottom"
To add "error bar" giving argument of "xerrr"
for iteration "boolean, count" in array.items():
To control the space with "offset" in x data argument
to fill some region between two lines with colors, use "fill_between(base_axis, upper line, lower line, where condition)"
To draw a stacked bar, use the function of ax.barh(labels, widths, left=starts...). Argument "left" has the same role as "bottom" in ax.bar function
The difference between them is violin plots show the whole range of the data with the distribution function is nothing special. violinplot(), boxplot()