我有一个从 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)])
慕的地6264312
TA贡献1817条经验 获得超6个赞
问题是你的观点没有顺序。该plot
函数的默认行为是按照您指定的顺序在您指定的点之间绘制线条。你的点位于抛物线上,但不是从左到右(或从右到左,无论你使用哪一个)的顺序。
如果删除线条并仅在点的位置绘制标记 ( plt.plot(x, y, linestyle="", marker="o")
),您可以看到以下内容:
对数组进行排序x
可以让您获得所需的输出,但您需要将y
数组排序为相同的顺序。
添加回答
举报
0/150
提交
取消