0

我想绘制一个尺寸为 50*50 的数据集。每个数据都与一个“概率”相关联,一个介于 0 和 1 之间的数字。我想用颜色渐变来表示它们的概率。我知道如何使用 matplotlib 工具绘制点。但是我应该如何将它们与适当的颜色联系起来呢?

谢谢!

4

2 回答 2

8

您需要使用颜色图将某种颜色与每个点相关联。例如考虑以下代码

 import numpy as np
 from mpl_toolkits.mplot3d import Axes3D
 import matplotlib.pyplot as plt
 import random as ran

 fig = plt.figure()
 ax = fig.add_subplot(111, projection='3d')

 cmhot = plt.cm.get_cmap("hot")
 xs =  [ran.random()*50 for n in range(0,50)]
 ys = [ran.random()*50 for n in range(0,50)]
 zs = [ran.random() for n in range(0,50)]
 l = ax.scatter(xs, ys, zs, c=zs, cmap=cmhot)
 fig.colorbar(l)
 plt.show()

结果是:

散点图 3d 图

在这种情况下,通过使用默认的“热”颜色图,颜色与 z 值相关联。

于 2013-07-25T21:22:49.677 回答
6

像这样的东西?关键点是c=z告诉根据 的标量值将scatter指定的颜色图应用于每个点。cmapz

import numpy
import matplotlib.pyplot as plt
x=numpy.random.randint(0,100,size=25)
y=numpy.random.randint(0,100,size=25)
z=numpy.random.rand(25)
plt.scatter(x, y, c=z, s=100, cmap=plt.cm.cool, edgecolors='None', alpha=0.75)
plt.colorbar()
plt.show()

您还可以给出颜色列表作为c参数。例如

colors=[(1,0,1,el) for el in z]
plt.scatter(x, y, c=colors, s=100, edgecolors='None')

在这种情况下,每个点都有一个与之关联的 RGB 元组并scatter使用您指定的颜色。使用上面给出的两条线,每个点的 alpha 值会根据概率而变化zalpha仅使用以下关键字是无法实现的scatter

于 2013-07-25T21:02:37.950 回答