我想製作一個散點圖(使用matplotlib),其中的點根據第三個變量着色。我已經非常接近這一點:Matplotlib散點圖;顏色作爲第三個變量的函數
plt.scatter(w, M, c=p, marker='s')
其中w和M是數據點,p是我想遮蔽的變量。
但是我想用灰度而不是顏色來做。誰能幫忙?
我想製作一個散點圖(使用matplotlib),其中的點根據第三個變量着色。我已經非常接近這一點:Matplotlib散點圖;顏色作爲第三個變量的函數
plt.scatter(w, M, c=p, marker='s')
其中w和M是數據點,p是我想遮蔽的變量。
但是我想用灰度而不是顏色來做。誰能幫忙?
在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()
沒有必要手動設置的顏色。相反,指定的灰度顏色表...
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()
或者,如果你願意一個wider range of colormaps,你還可以指定cmap
kwarg到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'使用。 – heltonbiker
@Thomas Collet:如果你想繪製輪廓,你必須插入點到二維矩陣的數據,然後使用'plt.contour()'或'plt.contourf()'來繪圖,但是這是一個不同的問題 – Zak
爲了記錄,如果您在第四列中提供了一個(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
爲什麼downvote? – joaquin
我收到一個錯誤:'rgba序列的長度應該是3或4' – MattClimbs