python - matplotlib 从 pandas 数据框中散布颜色

标签 python matplotlib

我想做的是创建一个如下所示的 matlab 散点图,但根据 C 列中的字符串为点着色,例如,yes = 蓝色,no = 红色。

 import matplotlib.pyplot as plt
 A = pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', ['yes', 'yes', 'no'])])


plt.scatter(A['A'], A['B'])

最佳答案

您可以创建一个(值:颜色)对的字典,并使用列表理解将这些值用作 plt.scatter 上的 color 参数。

colors = {'yes': 'b', 'no': 'r'}

plt.scatter(A['A'], A['B'], color=[colors[r] for r in A['C']])
<小时/>

编辑:添加图例的首选方法是迭代数据集中的唯一类并使用 legend 参数。因此,我们可以迭代按 C 分组的数据帧,并使用标签参数单独绘制它们。最后调用 plt.legend() 来显示它。

colors = {'yes': 'b', 'no': 'r'}

for idx, row in A.groupby('C'):
    plt.scatter(row['A'], row['B'], 
                color=[colors[r] for r in row['C']], 
                label=idx)

plt.legend()

关于python - matplotlib 从 pandas 数据框中散布颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876358/

相关文章:

python - Selenium - 没有名为 http.client 的模块

python - 如何将数据框列值设置为 X 轴标签

python - 如何绘制多个列表的直方图?

Python 箭袋角度问题 : What is the difference between angles ="uv" and angles ="xy"

python - 尝试将列表的索引绘制为直方图时的“TypeError: list indices must be integers, not str”

python - 在绘图中向每个条形图添加两个文本

python - 将微符号字符保存在 mongo 集合中

python - PIL 图像和 matplotlib 图为 png 图像获取饱和黑白

python - QGis:找到一个点所在的多边形

python - 在字典中查找相等的值