小能豆

Matplotlib 在散点图中自定义颜色

py

我想知道是否有一些优雅的方法可以根据条目的值在散点图中设置离散颜色。以下是一个完全简化的示例:

x=np.arange(100)
plt.scatter(x,x,c=x,cmap='jet')
plt.show()

1.png

假设我希望所有低于 40 的值都为绿色,40 到 60 之间的值都为绿色,大于 60 的值都为红色。我知道我可以创建一个循环,其中包含一些 if 语句,根据这些条件生成一个列表,这样我就得到了类似的东西colorlist=['blue','blue',.....]

2.png

我知道这可行,但有没有其他方法可以做到这一点,或者这是最简单的方法?


阅读 20

收藏
2024-12-05

共1个答案

小能豆

你可以做这样的事情:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.colors as mcol

cmap = mcol.ListedColormap(["blue","green","red"])

bounds = [0, 40, 60, 100]
norm = mcol.BoundaryNorm(bounds, cmap.N)

x=np.arange(100)
plt.scatter(x,x,c=x,cmap=cmap,norm=norm)
plt.show()

1.png

2024-12-05