Я пытаюсь прикрепить цветовую панель к моему графику MatplotLib, который отображает несколько графиков на одном графике ( Я не ищу одну цветовую панель для нескольких вспомогательных графиков ).
В В моем скрипте я загружаю файлы и строю графики переменных, однако я хотел бы раскрасить их относительно третьей переменной.
Я нашел способ сделать это, однако он отображает цветную полосу для каждого графика и выглядит как: 1
Мне бы хотелось, чтобы это выглядело так: 2 , за исключением того, что каждый путь должен быть раскрашен.
Вот мой блок код, генерирующий участки:
import os
import glob
import mesa_reader as mesa
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Rectangle
fig, ax = plt.subplots(1, 1, sharex=True, sharey=True, figsize=(10,5), dpi=100)
counter = 0
for fname in glob.glob('LOGS_P_*'):
a = mesa.MesaData(fname+'/LOGS1/history.data')
counter = counter + 1
if counter == 1:
plt.plot(a.log_Teff, a.log_L, color='black', linestyle='solid', linewidth=0.8)
points = np.array([a.log_Teff, a.log_L]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
# Create a continuous norm to map from data points to colors
norm = plt.Normalize(-20, a.lg_mtransfer_rate.max())
lc = LineCollection(segments, cmap='viridis', norm=norm)
# Set the values used for colormapping
lc.set_array(a.lg_mtransfer_rate)
lc.set_linewidth(2)
fig.colorbar(ax.add_collection(lc), ax=ax)
else:
plt.plot(a.log_Teff, a.log_L, color='black', linestyle='solid', linewidth=0.8)
points = np.array([a.log_Teff, a.log_L]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
# Create a continuous norm to map from data points to colors
norm = plt.Normalize(-20, a.lg_mtransfer_rate.max())
lc = LineCollection(segments, cmap='viridis', norm=norm)
# Set the values used for colormapping
lc.set_array(a.lg_mtransfer_rate)
lc.set_linewidth(2)
fig.colorbar(ax.add_collection(lc), ax=ax)