Python散点图中以颜色编码的第3列和第4列
我试着做一个简单的散点图,基于两列的颜色编码点。我所拥有的是:Python散点图中以颜色编码的第3列和第4列,python,matplotlib,Python,Matplotlib,我试着做一个简单的散点图,基于两列的颜色编码点。我所拥有的是: import numpy as np import matplotlib.pyplot as plt filename = ("master.kkids.obslist") data = np.loadtxt(filename,skiprows=14,dtype=str) x = data[:,7] y = data[:,8] u = data[:,18] v = data[:,19] z = data[:,20] x1 =
import numpy as np
import matplotlib.pyplot as plt
filename = ("master.kkids.obslist")
data = np.loadtxt(filename,skiprows=14,dtype=str)
x = data[:,7]
y = data[:,8]
u = data[:,18]
v = data[:,19]
z = data[:,20]
x1 = x.astype(float)
y1 = y.astype(float)
plt.scatter(x,y)
plt.savefig('hi.png')
现在,我是Python新手,我的谷歌搜索没有回答这个问题:
如何使点的颜色响应U、V和Z列?比如说,U列中有“Y”或“N”。如何使“N”点变为灰色,“Y”点变为红色?提前谢谢 您可以将包含颜色数组的参数传递给
scatter
函数,如下所示:
colors = ["grey" if s == "N" else "red" for s in u]
plt.scatter(x1, y2, c=colors)
此代码使用字符串“灰色”和“红色”填充列表颜色
,具体取决于u
中的哪些元素是“Y”和哪些元素是“N”,然后将其传递给分散
函数
如果在选择正确的颜色时需要更复杂的逻辑,我建议将其移动到单独的函数。让我们将其命名为c()
,并将U、V和Z元素作为参数传递给它
def c(u1, v1, z1):
if u1 == "N": return "grey"
... # other logic...
colors = [c(u1, v1, z1) for (u1, v1, z1) in zip(u, v, z)]
非常有帮助!非常感谢。第二个问题:是否可以让不同的柱改变点的形状,而不是颜色?或者除了颜色之外?@uhurulol我不这么认为。但是您可以多次调用
scatter
,传递不同的marker
参数,每次只包含要使用特定标记形状绘制的点。