#python #matplotlib
Вопрос:
Я пишу функцию для отображения графика с несколькими линиями. Каждая строка представляет столбец в моем массиве numpy. Моя ось x-это переменный год, а моя ось y-это мой np.массив. Я изо всех сил пытаюсь найти правильное место для правильной вставки вложенного списка в код, чтобы показать строку каждого поля на графике в зависимости от года
year = [2000,2001,2002,2003]
notes = [[10,11,11,14],[11,14,15,16],[15,14,12,11],[14,11,10,14]]
legend = {'maths':1, 'philosophy': 2, 'english': 3, 'biology': 4}
def PlotData (data,legend):
for i in data:
plt.plot(i,color = 'red' , marker = '.',
markersize = 10, linestyle = 'solid')
plt.legend(legend,loc ='upper left')
plt.title('Final Examination')
plt.xlabel('Year')
plt.ylabel('Marks')
plt.show()
PlotData((year,notes), legend)
Ответ №1:
Сначала вам нужно отделить ось x от оси y, потому что у вас есть только 1 массив для x и несколько для y.
year, notes = data
Затем вам нужно фактически указать ось x в своем коде, добавив year
«до i
«.
plt.plot(year, i , marker = '.',
markersize = 10, linestyle = 'solid')
наконец, вам нужно переместить остальную часть кода за пределы цикла, так как его нужно выполнить только один раз.
- я удалил
color=red
его, чтобы сделать график более четким с несколькими цветами.
year = [2000,2001,2002,2003]
notes = [[10,11,11,14],[11,14,15,16],[15,14,12,11],[14,11,10,14]]
legend = {'maths':1, 'philosophy': 2, 'english': 3, 'biology': 4}
def PlotData (data,legend):
year, notes = data
for i in notes:
plt.plot(year, i , marker = '.',
markersize = 10, linestyle = 'solid')
plt.legend(legend,loc ='upper left')
plt.title('Final Examination')
plt.xlabel('Year')
plt.ylabel('Marks')
plt.show()
PlotData((year,notes), legend)
Результат:
Комментарии:
1. aim97 , если каждая отметка во вложенном списке имеет форму, например( [10,11,11,14] для [математики,философии,английского языка , биологии] в 2000 году…), мне нужно использовать другой цикл for, чтобы подбирать каждый год, верно?
2. @Cressydeborbon если это так, вам лучше переформатировать свой список (возможно, выполнить транспонирование с помощью numpy) или выполнить итерацию по столбцам вместо строк, чтобы поместить данные в формат, подходящий для отображения, чем работать непосредственно с этим форматом (что может вызвать проблемы с matplotlib с порядком точек).