Python matplotlib:如何根据某些变量更改数据点的颜色

Python matplotlib:如何根据某些变量更改数据点的颜色,python,matplotlib,Python,Matplotlib,我有两个变量(x,y),它们随时间(t)变化。我想绘制x与t的对比图,并根据y的值为刻度着色。e、 g.对于y的最高值,勾号颜色为深绿色,对于最低值,勾号颜色为深红色,对于中间值,勾号颜色将在绿色和红色之间缩放 这可以用python中的matplotlib实现吗?这就是matplotlib.pyplot.scatter的用途 举个简单的例子: import matplotlib.pyplot as plt import numpy as np # Generate data... t = np

我有两个变量(x,y),它们随时间(t)变化。我想绘制x与t的对比图,并根据y的值为刻度着色。e、 g.对于y的最高值,勾号颜色为深绿色,对于最低值,勾号颜色为深红色,对于中间值,勾号颜色将在绿色和红色之间缩放


这可以用python中的matplotlib实现吗?

这就是
matplotlib.pyplot.scatter
的用途

举个简单的例子:

import matplotlib.pyplot as plt
import numpy as np

# Generate data...
t = np.linspace(0, 2 * np.pi, 20)
x = np.sin(t)
y = np.cos(t)

plt.scatter(t,x,c=y)
plt.show()

如果要绘制直线而不是点,请参见,此处修改以绘制表示函数的好/坏点(视情况而定)为黑色/红色:

def plot(xx, yy, good):
    """Plot data

    Good parts are plotted as black, bad parts as red.

    Parameters
    ----------
    xx, yy : 1D arrays
        Data to plot.
    good : `numpy.ndarray`, boolean
        Boolean array indicating if point is good.
    """
    import numpy as np
    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    from matplotlib.colors import from_levels_and_colors
    from matplotlib.collections import LineCollection
    cmap, norm = from_levels_and_colors([0.0, 0.5, 1.5], ['red', 'black'])
    points = np.array([xx, yy]).T.reshape(-1, 1, 2)
    segments = np.concatenate([points[:-1], points[1:]], axis=1)
    lines = LineCollection(segments, cmap=cmap, norm=norm)
    lines.set_array(good.astype(int))
    ax.add_collection(lines)
    plt.show()

对于散点图以外的其他图,这可能吗?3d绘图?“已经搜索了一段时间,但似乎找不到一种方法来完成它。@SitzBlogz-当然,只需使用自定义颜色贴图和norm即可。在您的例子中,
cmap,norm=mpl.colors.从\u级别和\u颜色([0,2,5,6],“红”、“绿”、“蓝”])
然后是
ax.scatter(x,y,c=z,cmap=cmap,norm=norm)
。谢谢,这很有用,但仍然无法使用
plot()
命令本身(为
o
指定的标记提供颜色映射)@GokhanArik-如果未指定颜色贴图,
scatter
将使用默认颜色贴图设置为的任何颜色。在本例中,您可以通过调用
plt.gray
、更改
.matplotlibrc
、或使用带有灰度颜色贴图的样式将其设置为
gray
。要指定应使用哪种颜色贴图散点,请使用
cmap
kwarg。例如:
cmap=“jet”
复制示例。是否也要有颜色图例?