#python #matplotlib
Вопрос:
Я пытался понять, как извлечь и сопоставить определенные значения друг с другом. Код, который у меня есть, выглядит следующим образом:
x1 = 0.1
x2 = 1
x3 = 10
x4 = 100
x5 = 1000
yz1 = return_two_nums(x1)
yz2 = return_two_nums(x2)
yz3 = return_two_nums(x3)
yz4 = return_two_nums(x4)
yz5 = return_two_nums(x5)
return_two_nums возвращает кортеж из 2 плавающих символов.
Что я хочу сделать, так это сделать два отдельных участка: для первого участка x1, x2, x3, x4, x5 (в целом мы можем назвать x) на оси x против все первые значения кортежей на оси y. Для второго графика то же самое, за исключением того, что я хочу, чтобы x отображался против всех вторых значений кортежей. Как я могу это сделать? Любая помощь будет признательна. Спасибо!
Ответ №1:
Понимание списка использования:
import matplotlib.pyplot as plt
plt.figure()
plt.plot([x1,x2,x3,x4,x5],[first for first,second in [yz1,yz2,yz3,yz4,yz5]])
plt.figure()
plt.plot([x1,x2,x3,x4,x5],[second for first,second in [yz1,yz2,yz3,yz4,yz5]])
Ответ №2:
Другой способ построения значений из этой конкретной функции может выглядеть следующим образом:
import matplotlib.pyplot as plt
import numpy as np
#exaplary function
def return_two_nums(x):
arr = np.array(x)
return (4*arr, arr**0.999)
x = [0.1, 1, 10, 100, 1000]
plt.plot(x, return_two_nums(x)[0], label='first value')
plt.plot(x, return_two_nums(x)[1], label='second value')
Таким образом, код станет более компактным и легким для чтения.