回答:
色を手動で設定する必要はありません。代わりに、グレースケールカラーマップを指定します...
import numpy as np
import matplotlib.pyplot as plt
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()
plt.show()

または、より広い範囲のカラーマップが必要な場合は、cmapkwargをに指定することもできますscatter。これらのいずれかの反転バージョンを使用するには_r、それらのいずれかの「」バージョンを指定するだけです。例えばのgray_r代わりにgray。いくつかの異なるグレースケールカラーマッププリ製(例えばありgray、gist_yarg、binary、など)。  
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()
mpl.cmとして直接入手することもできますplt.cm。
                    plt.contour()orまたはplt.contourf()- を使用してプロットする必要がありますが、これは別の質問です
                    matplotlibでは、灰色は0〜1の数値の文字列として指定できます。
例えばc = '0.1' 
次に、3番目の変数をこの範囲内の値に変換し、それを使用してポイントに色を付けることができます。
次の例では、色を決定する値としてポイントのy位置を使用しました。  
from matplotlib import pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]
color = [str(item/255.) for item in y]
plt.scatter(x, y, s=500, c=color)
plt.show()

c4番目の列にアルファ値を指定して引数として指定すると、ALPHAをカラーマップとして適用できます。3番目の変数は、Zは、ある場合にshape=(n,1)は、   colors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))(それが微調整することができ、もちろん)非常に良い効果を与えます。
                    plt.colorbar()がそれを行います
                    場合によっては、x値のケースに基づいて正確に色をプロットする必要があります。たとえば、3種類の変数といくつかのデータポイントを含むデータフレームがあるとします。そして、あなたは次のことをしたいのですが、
この場合、x値を対応するカラー名にリストとしてマッピングし、そのリストをplt.scatterコマンドに渡すために、short関数に書き込む必要がある場合があります。
x=['A','B','B','C','A','B']
y=[15,30,25,18,22,13]
# Function to map the colors as a list from the input list of x variables
def pltcolor(lst):
    cols=[]
    for l in lst:
        if l=='A':
            cols.append('red')
        elif l=='B':
            cols.append('blue')
        else:
            cols.append('green')
    return cols
# Create the colors list using the function above
cols=pltcolor(x)
plt.scatter(x=x,y=y,s=500,c=cols) #Pass on the list created by the function here
plt.grid(True)
plt.show()