Python 根据数据改变pyplot标记的alpha或颜色
我有一个相当大的数据集,包含我用matplotlib绘制的“恒星粒子”的位置。数据被组织成列,其中三列对应于x、y和z坐标。我绘制了x和y坐标,但我希望能够使用z坐标作为粒子的颜色贴图。例如,z坐标较大的粒子具有较低的alpha或颜色不同。当前我的代码如下所示:Python 根据数据改变pyplot标记的alpha或颜色,python,matplotlib,colors,Python,Matplotlib,Colors,我有一个相当大的数据集,包含我用matplotlib绘制的“恒星粒子”的位置。数据被组织成列,其中三列对应于x、y和z坐标。我绘制了x和y坐标,但我希望能够使用z坐标作为粒子的颜色贴图。例如,z坐标较大的粒子具有较低的alpha或颜色不同。当前我的代码如下所示: f = open(input_file) line = f.readline() line = f.readline() px=[] py=[] pz=[] for line in f: ldata = line.split()
f = open(input_file)
line = f.readline()
line = f.readline()
px=[]
py=[]
pz=[]
for line in f:
ldata = line.split()
x = np.float(ldata[2])
y = np.float(ldata[3])
z = np.float(ldata[4])
px.append(x)
py.append(y)
pz.append(z)
plt.plot(px,py,'ro',alpha=0.1)
plt.savefig(output_file)
我是python新手使用
plt.cm.
创建颜色列表,并更改alpha值(RGBA数组的最后一列)以匹配pz
数据
import numpy as np
import matplotlib.pyplot as plt
px = np.arange(0,10,0.5)
py = np.random.randn(20)
pz = np.arange(0,1,0.05)
colors = plt.cm.Reds(np.arange(0,1,0.05))
colors[:,-1] = pz
plt.figure()
plt.scatter(px,py,color=colors)
plt.show()
请记住,的alpha关键字只接受0到1之间的值。如果您的pz
数据不在该范围内,则需要对其进行缩放或修改,以使其正常工作
编辑:由于@cphlewis的评论而编辑,这应该比我的原始答案有效得多请查看答案:您希望将颜色传递为RGBA,其中A定义alpha值。matplotlib库通常很有用(加载大量小图片):@cphlewis谢谢!对我的回答做了修改,非常感谢。一个后续问题:当我这样做并使用plt.colorbar().set_label('text',rotation=90)时,我得到一个错误,上面写着“TypeError:您必须首先为可映射设置_数组”,还有一个空白的colorbar,看起来好像它有两个维度。我该如何解决这个问题?要明确的是,我将RGB值和alpha值映射到(不同的)变量,但我真正关心的是颜色栏上显示的RGB值。谢谢