我有一个相当大的数据集,其中包含我使用 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()

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

请记住,scatter/plot 的 alpha 关键字仅接受 0 到 1 之间的值。如果您的 pz 数据不在该范围内,则需要对其进行缩放或修改以使其正常工作。

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

关于python - 根据数据改变 pyplot 标记的 alpha 或颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36846927/

10-12 17:55
查看更多