给出以下数据框:
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"是红色,其余是蓝色,
另一个用于" bar"的点。是红色,其余是蓝色,
和第三个点为" 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()
提前致谢!
答案 0 :(得分:1)
您有两种选择:
创建两个"视图"来自数据,一个具有待成为红色的元素,另一个具有剩余元素。例如,您可以为此应用条件切片。然后,您将一组设置为红色,另一组设置为蓝色。这将是同一scatter
中的两个figure
命令。重复每一组。
相当方便的是,默认的jet
色彩图在极端情况下是蓝色和红色。然后,您可以只为所有数据调用scatter
一次,但将c
参数scatter
设置为通过条件切片从原始数据中获取的布尔数组。这将使所需项目的颜色映射到" 1",而另一个,错误项目将是" 0",并相应地进行颜色映射。
注意:当我谈到条件切片时,它就像:
interesting_items = array[array == interesting_value]
或Pandas中的一些等价物。