带有特定于值的颜色映射的Python imshow
我有一个大小为2000x200的2D数组,可以有N个不同的唯一值(大约20-30)。我希望能够使用具有随机颜色的带有特定于值的颜色映射的Python imshow,python,matplotlib,colormap,imshow,Python,Matplotlib,Colormap,Imshow,我有一个大小为2000x200的2D数组,可以有N个不同的唯一值(大约20-30)。我希望能够使用具有随机颜色的colormap(非线性)来imshow此数组(例如Set3),将每个唯一值分配给随机颜色。为此,使用Set3的问题在于,它为一系列值指定了随机颜色,但不是唯一的值。 问题示例如下所示: 您可以创建n种颜色(在您的示例中为20-30种),然后为每个值分配一种随机颜色。 请参阅以下代码,了解如何创建n种颜色,然后如何为每个矩形指定唯一的颜色 import matplotlib.pyplo
colormap
(非线性)来imshow
此数组(例如Set3
),将每个唯一值分配给随机颜色。为此,使用Set3
的问题在于,它为一系列值指定了随机颜色,但不是唯一的值。
问题示例如下所示:
您可以创建n种颜色(在您的示例中为20-30种),然后为每个值分配一种随机颜色。
请参阅以下代码,了解如何创建n种颜色,然后如何为每个矩形指定唯一的颜色
import matplotlib.pyplot as plt
def get_cmap(n, name='hsv'):
'''Returns a function that maps each index in 0, 1, ..., n-1 to a distinct
RGB color; the keyword argument name must be a standard mpl colormap name.'''
return plt.cm.get_cmap(name, n)
def main():
N = 30
fig=plt.figure()
ax=fig.add_subplot(111)
plt.axis('scaled')
ax.set_xlim([ 0, N])
ax.set_ylim([-0.5, 0.5])
cmap = get_cmap(N)
for i in range(N):
rect = plt.Rectangle((i, -0.5), 1, 1, facecolor=cmap(i))
ax.add_artist(rect)
ax.set_yticks([])
plt.show()
if __name__=='__main__':
main()
您可以对每个值执行某种哈希函数,而不是使用范围(N)中的i。
希望这能对您有所帮助。将您的数据组合到一个框架中,然后您可以将标签列应用到该框架中,这可能是值得的。在那之后,试着遵循一个解决方案,比如:签出;有两个原因:(1)它非常接近你想要做的事情,因此答案可能已经有帮助了,(2)它向你展示了你需要提供什么信息才能在这里得到高质量的答案。