我有一个相当大的数据集,其中包含我使用 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()
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()
请记住,scatter/plot 的 alpha 关键字仅接受 0 到 1 之间的值。如果您的
pz
数据不在该范围内,则需要对其进行缩放或修改以使其正常工作。编辑:感谢@cphlewis 的评论,这应该比我原来的答案更有效
关于python - 根据数据改变 pyplot 标记的 alpha 或颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36846927/