Как нарисовать фигуру с помощью цикла for с функцией цвета радуги с другой легендой - PullRequest
0 голосов
/ 31 октября 2018

Я бы хотел нарисовать 3 цифры на питоне. Я нарисовал это вручную.
Код:

import matplotlib.pyplot as plt
import numpy as np    
fig, ax = plt.subplots(1, 1)    
Semesters=np.arange(1,7,1)
y1=np.arange(10,16,1)
y2=np.arange(20,26,1)
y3=np.arange(51,57,1)
plt.plot(Semesters, y1,label="To Reach 120",linewidth=2)
plt.plot(Semesters, y2,label="To Reach 100",linewidth=2)
plt.plot(Semesters, y3,label="To Reach 80",linewidth=2)
ax.set_xticks(Semesters)
plt.legend(bbox_to_anchor=(0.85, .3), loc=2, borderaxespad=0.)

Я хочу использовать функцию петли и радуги (или любую другую последовательную функцию цвета) для ее цвета с учетом легенд. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 31 октября 2018

Вот одно решение для вас.

Объяснение : создайте свои y-данные в списке (y_list здесь) и сохраните свои метки (labels здесь). Затем просто прокрутите списки, чтобы построить по одному, используя цикл for, как вы и просили.

Чтобы определить цвета с помощью цветовой карты, например, rainbow, создайте список цветов, используя количество линий (графиков), которое у вас есть (3 в примере ниже). Затем просто назначьте эти цвета в цикле for, и вы получите желаемый график.

import matplotlib.pyplot as plt
import numpy as np    
from matplotlib import cm

fig, ax = plt.subplots(1, 1)    
Semesters=np.arange(1,7,1)
y_list = [np.arange(10,16,1), np.arange(20,26,1), np.arange(51,57,1)]
labels = ["To Reach 120", "To Reach 100", "To Reach 80"]

# Define the colors to be used using rainbow map (or any other map)
colors = [cm.rainbow(i) for i in np.linspace(0, 1, len(y_list))]

# Plot the lines using a for loop
for i in range(len(y_list)):
    plt.plot(Semesters, y_list[i], label=labels[i], linewidth=2., color=colors[i])

ax.set_xticks(Semesters)
plt.legend(bbox_to_anchor=(0.85, .3), loc=2, borderaxespad=0.)

enter image description here

...