Python matplotlib散点图出现问题+;子批次只有一个值

Python matplotlib散点图出现问题+;子批次只有一个值,python,matplotlib,plot,scatter-plot,Python,Matplotlib,Plot,Scatter Plot,我对matplotlib非常陌生,我想创建一个绘图和一个范围为0-1的比例作为输出;标记的颜色与比例相同。我用colorbar方法在散点图中绘制了它,但必须指定另一个imshow来绘制colorbar。问题是我得到了一个从0到0.5的矩形,这个矩形与标记的颜色相同,经过几天的尝试,我无法对其进行勘误(如果不勘误颜色栏/比例) 我们将非常感谢您的帮助 import matplotlib.pyplot as plt import matplotlib.cm as cm data =[0,0.7]

我对matplotlib非常陌生,我想创建一个绘图和一个范围为0-1的比例作为输出;标记的颜色与比例相同。我用colorbar方法在散点图中绘制了它,但必须指定另一个imshow来绘制colorbar。问题是我得到了一个从0到0.5的矩形,这个矩形与标记的颜色相同,经过几天的尝试,我无法对其进行勘误(如果不勘误颜色栏/比例)

我们将非常感谢您的帮助

import matplotlib.pyplot as plt
import matplotlib.cm as cm

data =[0,0.7]
for l in data:         
    cmap1 = cm.RdYlBu_r(l)
    fig = plt.figure(dpi=300)
    ax = fig.add_subplot(1,1,1)
    ax.grid()

    sc = plt.scatter(0, l, s=500, color= cmap1)
    cax = ax.imshow([[l]],vmin=0, vmax=1, interpolation='nearest',aspect=5, cmap= plt.cm.RdYlBu_r)

    plt.yticks([0,0.5, 1])
    plt.xticks([])

    plt.colorbar(cax)
    axes = plt.gca()
    plt.show
这是生成的图像:


编辑:我已经搜索了“matplotlib colorbar for scatter”和所有变体,但在应用它时出现了一个错误,例如“TypeError:您必须首先将_数组设置为可映射”。我猜是因为我一次只能映射一个值。对不起,如果不是那样的话;我是matplotlib的新手,我知道我想做一些特别的事情。

您得到的彩色矩形来自imshow绘图。由于不需要该矩形,请删除imshow绘图

下一步是获取颜色条
plt.colorbar
需要一个ScalarMappable作为第一个参数。所以一个好主意是提供散点图作为参数,
plt.colorbar(sc)

此时,您可能会得到一个错误,即“您必须首先为可映射设置_数组”。仔细观察散点图(
plt.scatter(0,l,s=500,color=cmap1)
,可以看到确实没有应用映射,因为单一颜色是由
color
参数定义的。为了成为有用的ScalarMapable,您需要定义一个数组,该数组可以使用
c
参数映射到颜色。因此,不要像尝试使用
cmap1=c那样手动进行映射m、 RdYlBu_r(l)
,您应该将该步骤留给散点图

sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r)
现在绘图可以工作了,但看起来很糟糕,因此您可能需要应用一些设置,如纵横比、限制图形大小等

总的来说,您可能会得到如下结果:

import matplotlib.pyplot as plt

data =[0,0.4,0.7,0.9]
for l in data:         
    fig = plt.figure(figsize=(2,3), dpi=100)
    ax = fig.add_subplot(1,1,1, aspect=10)
    ax.grid()

    sc = plt.scatter(0, l, s=500, c=l, vmin=0, vmax=1,cmap= plt.cm.RdYlBu_r)

    plt.xlim([-1,1])
    plt.ylim([0,1])
    plt.yticks([0,0.5, 1])
    plt.xticks([])

    plt.colorbar(sc)
    plt.subplots_adjust(right=0.7)
    plt.show()

您可以指定结果图的外观吗?您有两个数据点
[0,0.7]
。是否希望每个数据点都有一个绘图,并且每个绘图都有一个颜色条,指示与一个标记相同?实际上,我的想法可能是每个数据点都有一个带有颜色条的绘图。有些图像是生成的,但没有橙色矩形(它会根据数据点而变化).祝贺你获得金牌
matplotlib
badge!:-)非常感谢;答案,特别是解释,帮助很大。