gpt4 book ai didi

python - 如何为 matplotlib 中的圆圈分配颜色?

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:07 25 4
gpt4 key购买 nike

不知何故,为圆圈分配颜色与在散点图中分配颜色的工作方式不同:

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(6,6)) # give plots a rectangular frame

N = 4
r = 0.1

pos = 2.*np.random.rand(N,2) -1

# give different points different color
col = 1./N*np.arange(0,N)

# Method 1
for i,j,k in zip(pos[:,0],pos[:,1],col):
circle = plt.Circle((i,j), r, color = k)
fig.gca().add_artist(circle)
plt.show()

# Method 2
plt.scatter(pos[:,0],pos[:,1], c = col)
plt.show()

为什么方法 2 有效而方法 1 出现以下错误:

ValueError: to_rgba: Invalid rgba arg "0.0"
to_rgb: Invalid rgb arg "0.0"
cannot convert argument to rgb sequence

最佳答案

你得到的错误是因为你需要使用 float 的字符串表示而不是直接使用浮点值,例如:

    circle = plt.Circle((i,j), r, color=`k`)  # or str(k)

请注意,在上面我使用了反向标记,str(k) 的简写,它将 float 转换为字符串,例如 str(.75) = "0.75",并会为每个 k 值赋予不同的颜色。

这是 docs on to_rgba错误指的是什么。

编辑:
enter image description here

在 matplotlib 中有多种指定颜色的方法。在上面,您设置了通过 float 的字符串表示形式引用颜色图的 float 。然后可以通过 PolyCollection 设置此颜色图。

在你的例子中,要使用 Circle 更像 scatter,直接设置颜色可能是最简单的,这可以使用 rgba 元组,例如,可以从颜色图中查找的元组。

下面是一个示例,针对不同的 y 范围使用三种不同的颜色图。

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

N, r = 200, .1
cms = matplotlib.cm
maps = [cms.jet, cms.gray, cms.autumn]

fig = plt.figure(figsize=(6,6)) # give plots a rectangular frame
ax = fig.add_subplot(111)
pos = 2.999*np.random.rand(N,2)

for x, y in pos:
cmi = int(y) # an index for which map to use based on y-value
#fc = np.random.random() # use this for random colors selected from regional map
fc = x/3. # use this for x-based colors
color = maps[cmi](fc) # get the right map, and get the color from the map
# ie, this is like, eg, color=cm.jet(.75) or color=(1.0, 0.58, 0.0, 1.0)
circle = plt.Circle((x,y), r, color=color) # create the circle with the color
ax.add_artist(circle)
ax.set_xlim(0, 3)
ax.set_ylim(0, 3)
plt.show()

在上面,我让每个波段的颜色随 x 变化,因为我认为它看起来不错,但当然你也可以做随机颜色。只需切换正在使用的 fc 行:

enter image description here

关于python - 如何为 matplotlib 中的圆圈分配颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com