我有以下问题,我想创建我自己的颜色映射(红色混合紫色混合蓝色),映射到-2和+2之间的值,并想使用它在我的绘图中的颜色点。
然后,该图的色阶应在右侧。
这就是我目前创建地图的方式。但我不确定它是否混合了颜色。
cmap = matplotlib.colors.ListedColormap(["red","violet","blue"], name='from_list', N=None)
m = cm.ScalarMappable(norm=norm, cmap=cmap)
这样我将颜色映射到值。
colors = itertools.cycle([m.to_rgba(1.22), ..])
然后绘制:
for i in range(0, len(array_dg)):
plt.plot(array_dg[i], markers.next(),alpha=alpha[i], c=colors.next())
我的问题是:
一。我无法绘制色阶。
2。我不完全确定我的比例是否正在创建一个连续(平滑)色阶。
这里有一个how to create custom colormaps here的示例。 docstring对于理解
cdict
。一旦你把它放在腰带下面,你可能会使用这样的cdict
:尽管
cdict
格式给了您很大的灵活性,但我发现 渐变它的格式相当不直观。下面是一个实用函数 生成简单的LinearSegmentedColormaps:顺便说一下,
for-loop
为每次调用
plt.plot
绘制一个点。这对于少量的点有效,但对于许多点会变得非常缓慢。plt.plot
只能绘制一种颜色,但是plt.scatter
可以为每个点指定不同的颜色。因此,plt.scatter
是一条路。由于在其他答案中使用的方法对于这样简单的任务来说似乎相当复杂,因此这里有一个新的答案:
与生成离散颜色映射的
ListedColormap
不同,您可以使用LinearSegmentedColormap
。这可以使用from_list
方法从列表中轻松创建。更一般地,如果您有一个值(例如
[-2., -1, 2]
)和相应颜色(例如["red","violet","blue"]
)的列表,使得第n
个值应该对应于第n
个颜色,那么您可以规范化这些值并将它们作为元组提供给from_list
方法。如果您想自动创建一个通常用于surface plots的自定义发散颜色映射,那么这个模块与@unutbu方法相结合,对我来说很好。
高值和低值可以是字符串颜色名称或rgb元组。这是使用surface plot demo的结果:
相关问题 更多 >
编程相关推荐