Этот код работает нормально. Python читает каждый отдельный файл .txt. файл и отображает 23 отдельных графика/линии в один график. Python использует здесь некоторые стандартные цвета, т. е. каждый график автоматически отображается в другом цвете.
Я хотел бы сделать следующее: вместо использования стандартных цветов, назначенных Python автоматически, без добавления какого-либо кода, связанного с цветом, я хотел бы использовать определенную цветовую карту (например, «плазму») из matplotlib.
Проблема: независимо от того, какой код из Интернета я использую , все графики/линии/объекты всегда получают один и тот же цвет (например, первый цвет или последний цвет из карты цветов плазмы).
Как указать код, чтобы каждая строка имела один отдельный цвет цвет из выбранной цветовой карты?
Вот мой код:
Код: Выделить всё
# Initialize
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from matplotlib.pyplot import cm
# Numpy.loadtxt – Loads data from a textfile. Scipy.signal.welch – Creation of the FFT/power-spectrum. f, Pxx_den creates the ideal frequencies/FFT (f, Welch = Power Spectrum or Power Spectral Density)
Subjects = ["Subject1", "Subject2", "Subject3", "Subject4", "Subject5", "Subject7", "Subject8", "Subject9", "Subject10", "Subject11", "Subject12", "Subject13",
"Subject14", "Subject15", "Subject16", "Subject17", "Subject18", "Subject19", "Subject20", "Subject22", "Subject23", "Subject24", "Subject25"]
for Subject in Subjects:
Subject = np.loadtxt("/volumes/SanDisk2/fmri/dataset/processed/extracted_timeseriespython/restingstate/{0}/TimeSeries.SPC.Core_ROI.{0}.txt".format(Subject), comments="#", delimiter=None,
converters=None, skiprows=0, usecols=0, unpack=False, ndmin=0, encoding=None, max_rows=None, like=None)
f, Welch = signal.welch(Subject, fs=1.0, window="hann", nperseg=None, noverlap=None, nfft=1024, detrend="constant", return_onesided=True, scaling="density", axis=-1, average="mean")
cmap = plt.get_cmap("inferno")
slicedCM = cmap(np.linspace(0, 1, len(Subjects)))
plt.plot(f, Welch, c=slicedCM[Subjects.index(Subject)])
# Grid labels
plt.title("Power Spectrum for all subjects", fontsize=12, fontweight="bold")
plt.xlabel("Log Frequency [Hz]", fontsize=11, fontweight="bold")
plt.ylabel("Log Power [Hz]", fontsize=11, fontweight="bold")
# Grid dimenions and style
plt.xlim([0.005, 0.2]) # x-axis range
plt.ylim([0, 100]) # y-axis range
plt.xticks(np.arange(0, 0.21, 0.025)) # x ticks range (start, end, step)
plt.yticks(np.arange(0, 101, 10)) # y ticks range (start, end, step)
plt.grid(True) # Show grid
plt.rc("axes", axisbelow=True) # Grid behind figures
plt.rc("grid", linestyle="-", color="black") # Grid look
# Show result
plt.show()
Я использую matplotlib 3.5.0 с MacOSX в качестве серверной части.
Подробнее здесь: https://stackoverflow.com/questions/701 ... ne-subject