2011-11-20 100 views

回答

19

在matplotlib灰色可以給出一個0-1之間的數值的字符串。
例如c = '0.1'

然後,您可以將您的第三個變量轉換爲此範圍內的值並使用它來爲您的點着色。
在下面的例子我使用了點的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() 

enter image description here

+2

爲了記錄,如果您在第四列中提供了一個(n,4)形陣列作爲「c」參數,並使用alpha值,那麼可以將ALPHA作爲色彩映射應用。如果第三個變量是Z,用'shape =(n,1)',那麼'colors = numpy.hstack((numpy.zeros_like(z),numpy.zeros_like(z),numpy.ones_like(z),z/z .max()))給出了一個非常好的效果(當然可以調整它)。 – heltonbiker

+1

爲什麼downvote? – joaquin

+0

我收到一個錯誤:'rgba序列的長度應該是3或4' – MattClimbs

101

沒有必要手動設置的顏色。相反,指定的灰度顏色表...

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() 

enter image description here

或者,如果你願意一個wider range of colormaps,你還可以指定cmap kwarg到scatter。要使用任何這些的反轉版本,只需指定它們中的任何一個的「_r」版本。例如。 gray_r而不是gray。預先製作了幾種不同的灰度色標(例如gray,gist_yargbinary等)。

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() 
+1

謝謝!無論如何要在這些含有一定總重量的點上繪製輪廓? –

+6

'mpl.cm'也可直接作爲'plt.cm'使用。 – heltonbiker

+0

@Thomas Collet:如果你想繪製輪廓,你必須插入點到二維矩陣的數據,然後使用'plt.contour()'或'plt.contourf()'來繪圖,但是這是一個不同的問題 – Zak

相關問題