为了账号安全,请及时绑定邮箱和手机立即绑定

在matplotlib上的散点图中为每个系列设置不同的颜色

在matplotlib上的散点图中为每个系列设置不同的颜色

慕斯王 2019-10-15 10:39:44
假设我有三个数据集:X = [1,2,3,4]Y1 = [4,8,12,16]Y2 = [1,4,9,16]我可以散点图:from matplotlib import pyplot as pltplt.scatter(X,Y1,color='red')plt.scatter(X,Y2,color='blue')plt.show()我怎样用10套来做到这一点?我进行了搜索,可以找到我所要求的任何参考。编辑:澄清(希望)我的问题如果我多次调用散点图,则只能在每个散点图上设置相同的颜色。另外,我知道我可以手动设置颜色阵列,但是我敢肯定有更好的方法可以做到这一点。我的问题是:“如何自动散布多个数据集,每个数据集具有不同的颜色。如果有帮助,我可以轻松地为每个数据集分配一个唯一的编号。
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

一个简单的解决方法

如果您只有一种类型的集合(例如,没有误差线的散点图),则还可以在绘制它们后更改颜色,这有时更易于执行。


import matplotlib.pyplot as plt

from random import randint

import numpy as np


#Let's generate some random X, Y data X = [ [frst group],[second group] ...]

X = [ [randint(0,50) for i in range(0,5)] for i in range(0,24)]

Y = [ [randint(0,50) for i in range(0,5)] for i in range(0,24)]

labels = range(1,len(X)+1)


fig = plt.figure()

ax = fig.add_subplot(111)

for x,y,lab in zip(X,Y,labels):

        ax.scatter(x,y,label=lab)

您唯一需要的一段代码:

#Now this is actually the code that you need, an easy fix your colors just cut and paste not you need ax.

colormap = plt.cm.gist_ncar #nipy_spectral, Set1,Paired  

colorst = [colormap(i) for i in np.linspace(0, 0.9,len(ax.collections))]       

for t,j1 in enumerate(ax.collections):

    j1.set_color(colorst[t])



ax.legend(fontsize='small')

即使在同一子图中有许多不同的散点图,输出也会为您提供不同的颜色。

//img1.sycdn.imooc.com//5da531ef0001dde908000597.jpg

查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 12970 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信