#python #matplotlib #colors #time-series #scatter-plot
Вопрос:
Я хотел бы сделать точечную диаграмму, показывающую его временные ряды по эволюции цвета (например, от светло-красного до темно-красного), где у меня есть три независимых данных временных рядов.
Текущий код рисования каждого временного ряда является:
trj_up = open('./up_a_2.dat','r')
lines=trj_up.readlines()
xdata = []
for i in lines:
xdata.append(float(i.split()[1]))
ydata = []
for i in lines:
ydata.append(float(i.split()[2]))
print(xdata)
print(ydata)
plt.scatter(xdata,ydata,color='blue')
Каждый файл содержит следующие временные ряды (см. Ниже). Что я хочу сделать, так это изменить их цвет со 150 на 185 с изменением цвета от светло-красного до темно-красного, от светло-синего до темно-синего, от светло-зеленого до темно-зеленого.
Я надеюсь, что мое объяснение достаточно ясно.
150 -29.1207268 -27.2175614
151 -30.0192526 -5.39084822
152 -26.5683873 -12.0879794
153 -23.9083554 -8.89568682
154 -24.4077309 -7.38482774
155 -30.0130369 -12.524116
156 -25.5662431 -10.7311189
157 -30.4412668 -6.75740378
158 -34.4187745 -9.34580093
159 -32.8574865 -7.13468933
160 -29.3135992 -12.6535351
161 -27.1047419 -10.032973
162 -29.9819681 -11.5874607
163 -29.5163317 -8.82843222
164 -32.4836636 -8.84216924
165 -34.8578521 -12.6671381
166 -38.7623008 -16.6893051
167 -40.6933921 -10.2265058
168 -38.6141408 -14.5406604
169 -39.4936256 -15.8318642
170 -33.2624184 -20.9177089
171 -36.4191314 -21.5573257
172 -10.0391609 -17.7451025
173 -30.9494031 -17.9689093
174 -31.5509687 -15.1635098
175 -32.2729627 -19.8517145
176 -30.5633213 -22.5465021
177 -32.3842971 -19.4456455
178 17.1779354 -21.7972776
179 15.4035048 -29.0108646
180 -7.42574637 -21.591565
181 -30.3152961 -18.2796513
182 -32.394022 -19.8493851
183 -35.4276138 -13.7519211
184 -34.5321409 -13.5833979
185 -31.9403951 -11.2472362
Ответ №1:
scatter
принимает c
аргумент, который затем может быть отображен в цветовую карту с помощью cmap
аргумента
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.scatter.html
Что-то вроде ax.scatter(xdata, ydata, time, cmap='Reds')
должно сработать, возможно, с некоторой игрой с аргументами vmin
и. vmax