Пустое пространство Matplotlib без цвета при использовании fill_between с параметром where - PullRequest
0 голосов
/ 03 марта 2020

Обновление:

Я делю дни на 100 точек, затем интерполирую соответствующие значения min_temp и max_temp, результат становится лучше, но все же некоторые области не имеют цвета, как его изменить?

days_vals=numpy.linspace(1,10,100)
min_interp=numpy.interp(days_vals,days,min_temp)
max_interp=numpy.interp(days_vals,days,max_temp)
plt.xticks(days)
plt.plot(days_vals,min_interp,c='b',marker='o')
plt.plot(days_vals,max_interp,c='g',marker='o')
plt.fill_between(days_vals,min_interp,max_interp,where=[i>35 for i in min_interp],
             facecolor='lightgreen',alpha=0.7,interpolate=False)
plt.fill_between(days_vals,min_interp,max_interp,where=[i<=35 for i in min_interp],
             facecolor='lightpink',alpha=0.7,interpolate=False)

enter image description here

==================== ================================================== ===

Я использую fill_between с опцией where, чтобы залить цвет, min_temp > 35 fill green и min_temp <= 35 fill pink, но я вижу, что результат не такой, как я ожидал, так много пустых областей без цвет. enter image description here

Я ищу один вопрос, похожий на мою проблему ссылка

Решение состоит в том, чтобы добавить дополнительные точки данных в серию, которую ie на оси, но это не решает мою проблему

Как я могу изменить свои коды, чтобы сделать цвет непрерывным без пробелов?

вот коды :

from matplotlib import pyplot as plt

days=range(1,11)
max_temp=[37, 35, 42, 36, 39, 56, 50, 45, 41, 39]
min_temp=[32, 30, 37, 20, 34, 40, 37, 38, 32, 30]
fig=plt.figure(figsize=(10,8))
font={'weight':'normal',
      'color':'cyan',
      'fontsize':24,
      }
plt.title('Weather 2014',fontdict=font)
plt.xlabel('Month',fontdict=font)
plt.ylabel('Temperature',fontdict=font)
plt.title('Weather 2014',fontdict=font)
plt.xlabel('Month',fontdict=font)
plt.ylabel('Temperature',fontdict=font)
plt.xticks(days)
plt.plot(days,max_temp,marker='o',mfc='red',mec='None',markersize=3,label='Max Temp')
plt.plot(days,min_temp,marker='o',mfc='g',mec='None',markersize=3,label='Min Temp')


'''add additional data points'''
eta=1e-6
plt.fill_between(days,min_temp,max_temp,where=[i+eta>35 for i in min_temp],
                 facecolor='lightgreen',alpha=0.7)
plt.fill_between(days,min_temp,max_temp,where=[i-eta<=35 for i in min_temp],
                 facecolor='lightpink',alpha=0.7)
plt.legend(loc='upper left',bbox_to_anchor=(1,1))
fig.autofmt_xdate()
plt.grid(True)
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...