You could put a weight in the rgb values for the colors. Boxplot can receive a RGB tuple with 3 floats varying from 0.0 to 1.0.
The higher the value in RSM the closest to 1.0 is its Green component.
Orange is something between (255/255, 130/255, 0) and (255/255, 170/255, 0). In the code above you can set the "orangeness" that you like.
Here's the example:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import PathPatch
RSM = [0.23, 0.26, 0.29, 0.42, 0.4, 0.39, 0.29, 0.29, 0.30, 0.31, 0.35, 0.30]
up = max(RSM)
down = min(RSM)
df = pd.read_csv('teste.csv', sep=';')
greeness = [(RSM[i]-down)/up for i in range(len(RSM))]
lowest_orange = 0.2 # the higher this value more close to green is the lowest value
m =['Jan','Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
bp_dict = df.boxplot(column=['PEF-MFE'],
by="month",layout=(4,1),figsize=(6,8),
return_type='both',
patch_artist = True,
)
colors = [(1-(greeness[i] + lowest_orange),(RSM[i])/up,0) for i in range(len(RSM))]
for row_key, (ax,row) in bp_dict.iteritems():
ax.set_xlabel('')
for i,box in enumerate(row['boxes']):
box.set_facecolor(colors[i])
ax.set_xticklabels(m)
plt.show()
And the result:
Result