如何从列表中取出x和y,以便使用它创建图形

2024-10-06 11:24:24 发布

您现在位置:Python中文网/ 问答频道 /正文

So I made my list but after that I don't know how to take out of it my x and y so I can use it later to create a graph

import random
import numpy as np
import matplotlib.pyplot as plt

tabuletson = []

for i in range(0, 10):
    x = round(random.uniform(-1000,1000),2)
    y = (2*x+1)
    tabuletson.append([x,y])

print(tabuletson)

wielomian = np.poly1d(np.polyfit(x,y,3))
linia = np.linspace(-2000,2000,2000)

plt.scatter(x,y)
plt.plot(linia,wielomian(linia))
plt.show()

Tags: toimportsomyasnpitplt
3条回答

您正在使用的np.polyfitplt.scatter函数需要单独的X和Y坐标列表

尝试:

import random
import numpy as np
import matplotlib.pyplot as plt

tabuletson_x = []
tabuletson_y = []

for i in range(0, 10):
    x = round(random.uniform(-1000,1000),2)
    y = (2*x+1)
    tabuletson_x.append(x)
    tabuletson_y.append(y)

print(tabuletson_x)
print(tabuletson_y)

wielomian = np.poly1d(np.polyfit(tabuletson_x,tabuletson_y,3))
linia = np.linspace(-2000,2000,2000)

plt.scatter(tabuletson_x,tabuletson_y)
plt.plot(linia,wielomian(linia))
plt.show()

注意:在for循环之后引用xy将给出随机生成列表中的最后一个值:

list of x vals:  [-8.78, 554.81, -693.22, 955.8, 88.95, 235.55, -108.67, -804.08, 494.65, 754.58]
list of y vals:  [-16.56, 1110.62, -1385.44, 1912.6, 178.9, 472.1, -216.34, -1607.16, 990.3, 1510.16]
x:  754.58
y:  1510.16

有关更多信息:

PyPlot Scatter documentation

PolyFit documentation

您所要做的就是在for循环之后和外部添加一行代码。此命令将创建两个包含x和y值的列表。您可以使用相同的变量名xy

x, y = zip(*tabuletson)

enter image description here

我认为,根据plt.scatterplt.plot的工作方式,这是一种更好的方法。希望它能像你想的那样工作

import random
import numpy as np
import matplotlib.pyplot as plt

x = []; y = []

for i in range(10):
    x.append(round(random.uniform(-1000,1000),2))
    y.append(2*x[i]+1)

wielomian = np.poly1d(np.polyfit(x,y,3))
linia = np.linspace(-2000,2000,2000)

plt.scatter(x,y)
plt.plot(linia,wielomian(linia))
plt.show()

相关问题 更多 >