根据数据改变pyplot标记的alpha或颜色

时间:2016-04-25 17:11:19

标签: python matplotlib colors

我有一个相当大的数据集,其中包含"星形颗粒的位置"我用matplotlib绘制的。数据被组织成列,其中三列对应于x,y和z坐标。我绘制了x和y坐标,但我希望能够将z坐标用作粒子的一种颜色图。例如,具有较大z坐标的粒子具有较低的α或具有不同的颜色。目前我的代码如下所示:

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的新手

1 个答案:

答案 0 :(得分:3)

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

enter image description here

请注意,scatter/plot的alpha关键字只接受0到1之间的值。如果您的pz数据不在该范围内,则需要对其进行缩放或修改以便这个工作。

编辑:编辑感谢来自@cphlewis的评论,这应该比我原来的答案更有效