为了账号安全,请及时绑定邮箱和手机立即绑定

显示几条随机线而不是多项式线的多项式数据

显示几条随机线而不是多项式线的多项式数据

倚天杖 2023-10-25 10:59:48
我有一个从 x 输出 y 的多项式函数(来自多项式最小二乘拟合)。我尝试绘制此曲线以显示多项式连续曲线,如此处的一些答案所示:使用 Matplotlib 和 coeffiecients 绘制多项式我的代码可以简化为:import sqlite3con = sqlite3.connect(":memory:")columns = ["Nom", "Age", "Taille"]columns_str = '"' + '","'.join(columns) + '"'con.execute(f"CREATE TABLE people ({columns_str})")data = [  ('Karl', 11, 185)]stmt = f"INSERT INTO people ({columns_str}) VALUES (?, ?, ?)"con.executemany(stmt, data)另外,可能不要打电话给你的桌子master——稍后会变得非常混乱。L像和 之类的名字list2也没有帮助。明确命名变量,按照它们的含义或包含的内容命名。未来的你会感谢你的。也许更干净一点:import sqlite3con = sqlite3.connect(":memory:")columns = ("Nom", "Age", "Taille")con.execute("CREATE TABLE people (%s, %s, %s)" % columns)data = [  ('Karl', 11, 185)]stmt = f"INSERT INTO people (%s, %s, %s) VALUES (?, ?, ?)" % columnscon.executemany(stmt, data)
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

问题正如另一个答案中所述。我的回答展示了如何以排序的方式进行绘图。x 数组和 y 数组是二维的 (10 x 1)。在我的回答中,我展示了三种使用 x 的排序索引作为参数来按相同顺序对 y 值进行排序的方法。

方式一:

plt.plot(sorted(x), y[np.argsort(x[:, 0])])

方式二:

plt.plot(sorted(x), y[np.argsort(x.ravel())])

方式三:

x_sorted = np.sort(x.ravel())
plt.plot(x_sorted, y[np.argsort(x_sorted)])


查看完整回答
反对 回复 2023-10-25
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

问题是你的观点没有顺序。该plot函数的默认行为是按照您指定的顺序在您指定的点之间绘制线条。你的点位于抛物线上,但不是从左到右(或从右到左,无论你使用哪一个)的顺序。

如果删除线条并仅在点的位置绘制标记 ( plt.plot(x, y, linestyle="", marker="o")),您可以看到以下内容:

https://img1.sycdn.imooc.com/653884ce000107af06370477.jpg

对数组进行排序x可以让您获得所需的输出,但您需要将y数组排序为相同的顺序。


查看完整回答
反对 回复 2023-10-25
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信