matplotlibの異なる色の点でプロットをプロットする通常の方法は、色のリストをパラメータとして渡すことです。
例えば:
import matplotlib.pyplot
matplotlib.pyplot.scatter([1,2,3],[4,5,6],color=['red','green','blue'])
![3 colors](https://i.stack.imgur.com/Jew5I.png)
あなたはリストのリストを持っていて、それらをリストごとに色付けしたいとき。 私は最もエレガントな方法は、@ DSMによってsuggesytedされたと思う、 ちょうど散るために複数の呼び出しを行うループを行う。
しかし、あなただけの1コールでそれをやってみたかったいくつかの理由であれば、あなたはリスト内包とフローリング部門のビットで、色の大きなリストを作ることができます。
import matplotlib
import numpy as np
X = [1,2,3,4]
Ys = np.array([[4,8,12,16],
[1,4,9,16],
[17, 10, 13, 18],
[9, 10, 18, 11],
[4, 15, 17, 6],
[7, 10, 8, 7],
[9, 0, 10, 11],
[14, 1, 15, 5],
[8, 15, 9, 14],
[20, 7, 1, 5]])
nCols = len(X)
nRows = Ys.shape[0]
colors = matplotlib.cm.rainbow(np.linspace(0, 1, len(Ys)))
cs = [colors[i//len(X)] for i in range(len(Ys)*len(X))] #could be done with numpy's repmat
Xs=X*nRows #use list multiplication for repetition
matplotlib.pyplot.scatter(Xs,Ys.flatten(),color=cs)
![All plotted](https://i.stack.imgur.com/bMgHn.png)
cs = [array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
...
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00])]
ここではどのような疑問がありますか?色は、同様の配列をすることができますが、あなただけの散乱を複数回呼び出すと何を解決することはできませんか? – seberg
私は散布を複数回呼び出す場合、私は同じ色を取得します。私は私の質問を更新します。 – Yotam