Как соединить/построить эти точки в python/matplotlib

#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')
 

Таким образом, код станет более компактным и легким для чтения.