Python 改变绘图的颜色

Python 改变绘图的颜色,python,matplotlib,Python,Matplotlib,我有这个密码: import matplotlib.pyplot as plt for (i,j) in selected: plt.plot([plants_points[i][0],customers_points[j][0]], [plants_points[i][1],customers_points[j][1]], 'r-') 但是,我希望表示的函数对每个I具有不同的颜色。例如,如果i=1它是红色的,用一行(r-)显示;如果i=2它是蓝色的,用一行(b-)显示,等等。问题

我有这个密码:

import matplotlib.pyplot as plt
for (i,j) in selected:
      plt.plot([plants_points[i][0],customers_points[j][0]], [plants_points[i][1],customers_points[j][1]], 'r-')

但是,我希望表示的函数对每个
I
具有不同的颜色。例如,如果
i=1
它是红色的,用一行(
r-
)显示;如果
i=2
它是蓝色的,用一行(
b-
)显示,等等。问题是我没有定义的范围,也就是说,
i
可以根据用户的需要取任意多的值。有什么办法可以实现吗?谢谢。

选中的
是一个元组列表
(i,j)
,您需要为
i
的每个值使用不同的颜色。
i
的每个值都可能在所选的
中出现多次

导入matplotlib.pyplot作为plt
#使用颜色贴图生成任意数量的颜色
cmap=plt.get_cmap('jet'))
#获取i的唯一值,并为每个值指定一种颜色
i_值=设置([s[0]表示所选中的s])
i_colors={i:cmap(idx/len(i_值))对于idx,i在枚举(i_值)}
#打印时,通过在i_颜色中查找i来选择颜色:
图,ax=plt子批次(1)
对于选定的i,j:
颜色=i_颜色[i]
ax.图([0,1],[j,j],'-',c=颜色)
如果您对即将出现的
i
的值了解多一点,您可能可以避免使用字典。例如,如果您知道
i
在其最小值和最大值之间合理分布,则可以这样做:

#使用颜色贴图生成任意数量的颜色
cmap=plt.get_cmap('jet'))
#获取i的唯一值,并为每个值指定一种颜色
i_值=设置([s[0]表示所选中的s])
i_min=min(i_值)
i_max=max(i_值)
#打印时,通过计算颜色在cmap中的位置来选择颜色:
图,ax=plt子批次(1)
对于选定的i,j:
颜色=cmap((i-i_最小值)/(i_最大值-i_最小值))
ax.图([0,1],[j,j],'-',c=颜色)

<> P>使用哪种颜色图是很难的,如果<代码> i <代码>的值是有意义的,那么顺序色标是有用的,如果你想更好地分辨附近的值,那么考虑一些类似于“代码>”的标志“< /COD>”。< /P>创建一个具有预置颜色的列表(<代码>颜色= [ 'R-’,'B-',…] /代码>)并使用
i
循环访问它<代码>颜色[i%len(colors)]
谢谢你的回答,但根据你所说的,我有一个问题:我有很多不同的颜色用于不同的j。例如,我希望:(I,j)=(1,0)的颜色与(1,3)的颜色相同,因为尽管j不同,但I是相同的。但是你所说的(1,0)和(1,3)的颜色不同。我不知道我是否已经解释过了对不起。太多的代码用于注释,所以我已经添加了上面的内容。如果有帮助的话,我会整理一下回复。你关心颜色的顺序吗?谢谢你的回答,很好。我已经整理好了,如果你还需要什么,请告诉我。