Python 根据给定值向matplotlib中的线打印添加颜色

Python 根据给定值向matplotlib中的线打印添加颜色,python,matplotlib,Python,Matplotlib,我有一个普通散点图: import numpy as np import matplotlib.pyplot as plt import random x = np.random.random_sample((100,)) x = np.sort(x) y = x + np.sin(np.pi * x) z = 5 * x fig = plt.figure() plot = plt.scatter(x, y, s= 10, c = z, cmap='coolwarm') fig.colorb

我有一个普通散点图:

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

x = np.random.random_sample((100,))
x = np.sort(x)
y = x + np.sin(np.pi * x)
z = 5 * x

fig = plt.figure()
plot = plt.scatter(x, y, s= 10, c = z, cmap='coolwarm')
fig.colorbar(plot)
plt.grid(True, 'both')
plt.show()
这就产生了一个类似这样的情节

然而,我真的想添加一条线来分散和连接这些点。这听起来可能很可笑,因为在给定的情况下很容易遵循这些点,但是想象一下,如果数据更加分散,可能有多个数据集

所以我的目标是在上面的散点图中添加一条线,但是线的颜色应该根据“z”的值而改变,就像散点图一样。这可能吗

编辑:
上面提供的
x,y,z
只是解释问题的随机数据。实际上,您可以想象点(x,y)坐标是从实验中给出的,这意味着通常情况下,
x,y,z
之间没有关系,或者即使是这样,也无法预先知道。

您可以使用
np.linspace()
函数添加另一个散点图:

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

x = np.random.random_sample((100,))
x = np.sort(x)
y = x + np.sin(np.pi * x)
z = 5 * x

fig = plt.figure()
plot = plt.scatter(x, y, s= 10, c = z, cmap='coolwarm')
fig.colorbar(plot)
plt.grid(True, 'both')

# add another scatterplot
x_line = np.linspace(np.min(x), np.max(x), num=1000)
y_line = x_line + np.sin(np.pi * x_line)
z_line = 5 * x_line
plt.scatter(x_line, y_line, c=z_line, s=0.1, cmap='coolwarm')

plt.show()

这是一个很好的技巧,但我认为解决方案不够健壮。假设点(x,y)坐标是通过实验给出的。您的解决方案假设了两件事:首先,
x
是一元函数,其次,
y
z
x
的已知函数。这在我用随机数据发布的这个简化问题中是正确的,但我正在寻找更一般情况的解决方案。我相信只要
x
不再是单调的,您的解决方案就会失败。@skrat在绘制线之前通过增加
x
对值进行排序?