给定以下数据帧:
import pandas as pd
df = pd.DataFrame({'X':[1,2,3],
'Y':[4,5,6],
'Site':['foo','bar','baz']
})
df
Site X Y
0 foo 1 4
1 bar 2 5
2 baz 3 6
我想迭代数据帧中的行,以生成3个散点图(在这种情况下,尽管需要n行的通用解决方案):
其中"foo"的点是红色,其余的是蓝色,
另一个,其中"条"的点是红色,其余的是蓝色,
第三种是"baz"的圆点为红色,其余为蓝色。
以下是手动完成的"foo"示例:
import matplotlib.pyplot as plt
%matplotlib inline
color=['r','b','b']
x=df['X']
y=df['Y']
plt.scatter(x, y, c=color, alpha=1,s=234)
plt.show()
提前感谢!
您有两个选项:
-
根据数据创建两个"视图",一个包含红色元素,另一个包含其余元素。例如,您可以为此应用条件切片。然后,用红色绘制一组,用蓝色绘制另一组。这将是同一CCD_ 2中的两个CCD_。对每组重复上述步骤。
-
非常方便的是,默认的
jet
颜色映射在其极端是蓝色和红色。然后,您可以对所有数据只调用scatter
一次,但将scatter
的c
参数设置为通过条件切片从原始数据中获取的布尔数组。这将使所需项目的颜色映射到"1",而其他错误项目将为"0",并相应地进行颜色映射。
注意:当我谈到条件切片时,它就像:
interesting_items = array[array == interesting_value]
或者Pandas中的一些等价物。