#python #python-3.x #list #matplotlib
#python #python-3.x #Список #matplotlib
Вопрос:
Здравствуйте, я использую matplotlib, и ниже есть эта функция, которую я использую для размещения меток данных для 3 разных графиков, которые имеют одинаковые значения x (x_indexes), но отличаются значениями y (bar_positions, Max_profit , Max_drawdown). Мне нужна функция, которая позволит применять формат метки данных ко всем значениям y. Спасибо за помощь:
x_indexes= [0,1,2,3,4,5,6]
bar_positions= [10,20,30,40,50,60,70]
Max_profit= [1,3,5,7,9,11,13]
Max_drawdown= [1,1,2,2,3,3,4]
bar_char = [bar_positions, Max_profit,Max_drawdown]
for x,y in zip(x_indexes,#insert funtion that goes through bar_char[] here#):
label = "{:.1f}".format(y)
plt.annotate(label, # this is the text
(x,y), # this is the point to label
textcoords="offset points", # how to position the text
xytext=(0,20), # distance from text to points (x,y)
fontsize= 10,
rotation =90,
ha='center') # horizontal alignment can be left, right or center
Комментарии:
1. Не могли бы вы уточнить вопрос? Не соответствует ли опубликованный вами код вашим требованиям и почему?
2. @Stef Мне нужна функция для просмотра всех имен списков в bar_char. Если я введу
for x,y in zip(x_indexes,bar_char[0])
его, он будет форматироваться толькоbar_positions
так, как я хочу, чтобы он форматировал все 3 списка (bar_positions, Max_profit , Max_drawdown
). Я пока не смог этого сделать.3. Вы можете сделать это исключительно с помощью matplotlib и списков. Но рассматривали ли вы возможность использования
pandas
для этого? pandas использует matplotlib для построения графиков и, как правило, автоматически форматирует графики удобным способом.
Ответ №1:
Ваше текущее использование zip
имеет первый аргумент x_indexes
, который содержит 7 элементов, вторым аргументом [bar_positions, Max_profit,Max_drawdown]
которого является список из 3 х 7 списков элементов.
Что вам нужно сделать, так это zip
21 x_indexes (3 повторения x_indexes) с 21 позицией (объединение 3 списков)
bar_char = bar_positions Max_profit Max_drawdown # list with 21 positions
for x,y in zip(3 * x_indexes, bar_char ):
Комментарии:
1. Спасибо, это здорово