Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PatchCollection的Matplotlib颜色栏覆盖颜色_Python_Matplotlib - Fatal编程技术网

Python PatchCollection的Matplotlib颜色栏覆盖颜色

Python PatchCollection的Matplotlib颜色栏覆盖颜色,python,matplotlib,Python,Matplotlib,我正在根据变量值中设置的值绘制面片 pc = PatchCollection(patches, match_original=True) norm = Normalize() cmap = plt.get_cmap('Blues') pc.set_facecolor(cmap(norm(values))) ax.add_collection(pc) 现在我还需要一个额外的色条。如果我插入(例如,在设置颜色之前) 它可以工作,但是现在所有的颜色都变成了灰色。以下set\u faceco

我正在根据变量值中设置的值绘制面片

pc = PatchCollection(patches, match_original=True)  

norm = Normalize()
cmap = plt.get_cmap('Blues')
pc.set_facecolor(cmap(norm(values)))
ax.add_collection(pc)

现在我还需要一个额外的色条。如果我插入(例如,在设置颜色之前)


它可以工作,但是现在所有的颜色都变成了灰色。以下
set\u facecolor
不会改变任何内容。甚至当我在
plt.colorbar()
中添加
cmap=
命令时,所有内容都保留在灰度中。我不知道该怎么办。

你是在问如何用特定的颜色贴图给收藏上色吗

只需设置颜色映射(
cmap
)以及
数组

例如:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection

num = 10
data = np.random.random((num, 2))
values = np.random.normal(10, 5, num)

# I'm too lazy to draw irregular polygons, so I'll use circles
circles = [plt.Circle([x, y], 0.1) for (x,y) in data]
col = PatchCollection(circles)

col.set(array=values, cmap='jet')

fig, ax = plt.subplots()

ax.add_collection(col)
ax.autoscale()
ax.axis('equal')

fig.colorbar(col)
plt.show()

要解释您的问题中发生了什么:


对于集合,面颜色可以手动设置(即
set\u facecolors
),也可以映射到由色条控制的一系列值(
set\u array
)。这两种选择是相互排斥的。因此,在您调用
set\u array
后,原始的面颜色将被忽略。

您知道如何使用不透明度添加颜色,@Joe?我正试图这样做,但没有成功。谢谢你。@pceccon-不知道你的问题为什么被否决(然后关闭)。这是个好问题。无论如何,如果使用
set_array
,不透明度要么由彩色贴图控制,要么由单个全局
alpha
值控制。你到底想干什么?如果你想让不透明度随着颜色的变化而有规律地变化,这是可能的(你需要一个自定义的颜色贴图)。嗨@Joe,经过两次反对票(也不知道为什么)和大量研究,我成功地做到了,并删除了这个问题。谢谢你试着帮助我。(:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import PatchCollection

num = 10
data = np.random.random((num, 2))
values = np.random.normal(10, 5, num)

# I'm too lazy to draw irregular polygons, so I'll use circles
circles = [plt.Circle([x, y], 0.1) for (x,y) in data]
col = PatchCollection(circles)

col.set(array=values, cmap='jet')

fig, ax = plt.subplots()

ax.add_collection(col)
ax.autoscale()
ax.axis('equal')

fig.colorbar(col)
plt.show()