Matplotlib Scatter Plot Color One Point

时间:2016-04-17 23:12:44

标签: python-3.x pandas matplotlib

给出以下数据框:

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()

提前致谢!

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 创建两个"视图"来自数据,一个具有待成为红色的元素,另一个具有剩余元素。例如,您可以为此应用条件切片。然后,您将一组设置为红色,另一组设置为蓝色。这将是同一scatter中的两个figure命令。重复每一组。

  2. 相当方便的是,默认的jet色彩图在极端情况下是蓝色和红色。然后,您可以只为所有数据调用scatter一次,但将c参数scatter设置为通过条件切片从原始数据中获取的布尔数组。这将使所需项目的颜色映射到" 1",而另一个,错误项目将是" 0",并相应地进行颜色映射。

  3. 注意:当我谈到条件切片时,它就像:

    interesting_items = array[array == interesting_value]
    

    或Pandas中的一些等价物。