根据给定的值在matplotlib中的线图中添加颜色

时间:2019-06-11 08:07:32

标签: 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.colorbar(plot)
plt.grid(True, 'both')
plt.show()

产生类似这样的情节

enter image description here

但是,我真的很想添加一条线以分散并连接这些点。听起来很荒谬,因为在给定的情况下很容易跟踪这些点,但是请想象一下数据是否会更加分散并且可能会有多个数据集...

所以我的目标是在上面的散点图上添加一条线,但是线的颜色应该根据'z'的值而变化,就像散点图一样。那有可能吗?

编辑: 上面提供的x, y, z只是用来解释问题的随机数据。实际上,您可以想象点(x,y)的坐标是从一个实验中给出的,这意味着通常x, y, z之间没有关系,或者即使之间没有关系,

1 个答案:

答案 0 :(得分:0)

您可以使用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()

enter image description here