Я пытаюсь интерполировать между кривыми, где между ними есть пробелы, как это видно на графиках ниже. Я использую библиотеку matploblib и Python 3 для этого. Я пытался найти некоторые ресурсы в Интернете, но не смог найти ничего хорошего для такого начинающего, как я. Как я уже упоминал, я использую matplotlib, но открыт для использования других библиотек (seaborn?), Которые могут быть лучше для этого. Спасибо!
Обновление: как было предложено в комментариях, я попытался использовать метод plt.fill_between()
с интерполяцией = True с новой картой цветов (viridis). Тем не менее, результат ниже. Что-то не работает Какие-либо предложения? Я приложил код для моего графика ниже.
import Model
rates = [rate for rate in range(1, 10000, 100)]
starts = [rates[jj] / 27 for jj in range(len(rates))]
combo = dict(zip(rates, starts))
curves = [model.Model(start=combo[rt], R=rt) for rt in combo.keys()]
for curve in curves:
curve.run_model()
to_plot = ['SO4', 'H2S', 'd34S_s', 'd34S_H2S']
logged = [log(xx) for xx in curves[0].f_in]
colors = plt.cm.viridis(np.linspace(0, 1, len(rates)))
for obj in curves:
for element in to_plot:
plt.subplot(2, 2, to_plot.index(element) + 1)
plt.plot(logged,
getattr(obj,element),color=colors[curves.index(obj)])
plt.fill_between(logged, getattr(obj, element), interpolate=True, cmap='viridis')
sm = plt.cm.ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=min(rates), vmax=max(rates)))
plt.colorbar(sm,label=var)
plt.show()