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
对值进行排序?