我想绘制一个尺寸为50 * 50的数据集。每个数据都与一个“概率”(一个介于0和1之间的数字)相关联。我想通过颜色等级来表示它们的概率。我知道如何使用matplotlib工具绘制点。但我应该如何将它们与适当的颜色联系起来?Matplotlib Python散点图
谢谢!
我想绘制一个尺寸为50 * 50的数据集。每个数据都与一个“概率”(一个介于0和1之间的数字)相关联。我想通过颜色等级来表示它们的概率。我知道如何使用matplotlib工具绘制点。但我应该如何将它们与适当的颜色联系起来?Matplotlib Python散点图
谢谢!
像这样?关键点是c=z
它告诉scatter
根据z
的标量值将cmap
指定的颜色映射应用于每个点。
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值根据z
的概率变化。这个你不能只是scatter
的alpha
关键字实现:
什么是s = 100? – Martian2049
你需要使用一个颜色映射到特定的颜色,以每个点关联。 ,通过使用默认的“热”颜色表
在这种情况下,颜色被关联到z值:例如,考虑下面的代码段
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()
导致此。
你能告诉我们你试过了什么吗?你读过[docs](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.scatter)吗?他们怎么样,你不了解或没有按照你的预期工作? – tacaswell
以确认您想绘制2维空间中的2500个维度? ... –
重复? http://stackoverflow.com/questions/8202605/matplotlib-scatterplot-colour-as-a-function-of-a-third-variable – Brad