如果我通过以下方式创建颜色:
import numpy as np
from matplotlib import pyplot as plt
n = 6
color = plt.cm.coolwarm(np.linspace(0.1,0.9,n))
color
color是一个numpy数组:
array([[ 0.34832334, 0.46571115, 0.88834616, 1. ],
[ 0.56518158, 0.69943844, 0.99663507, 1. ],
[ 0.77737753, 0.84092121, 0.9461493 , 1. ],
[ 0.93577377, 0.8122367 , 0.74715647, 1. ],
[ 0.96049006, 0.61627642, 0.4954666 , 1. ],
[ 0.83936494, 0.32185622, 0.26492398, 1. ]])
但是,如果我将RGB值(没有alpha值1)作为元组插入到.mplstyle
文件(map(tuple,color[:,0:-1])
)中,则会出现类似以下的错误:
in file "/home/moritz/.config/matplotlib/stylelib/ggplot.mplstyle"
Key axes.color_cycle: [(0.34832334141176474 does not look like a color arg
(val, error_details, msg))
知道为什么吗?
4条答案
按热度按时间vom3gejh1#
对于Matplotlib 2.2,使用
cycler
模块即可完成此操作,无需转换为十六进制值。baubqpgj2#
“连续”色彩Map表
如果你想从一个“连续的”色彩Map表(比如默认的viridisMap表)中循环
N
颜色,the solution by @Gerges可以很好地工作。“离散”色彩Map表
Matplotlib提供了一些“离散”的色彩Map表,它们包含少量的不同颜色,用于定性视觉效果,如
tab10
色彩Map表。要循环使用此类色彩Map表,解决方案可能是不使用N
,而只是将Map表的所有颜色都移植到循环器。请注意,只有
ListedColormaps
具有.colors
属性,因此这只适用于那些色彩Map,但不适用于jet
Map。合并溶液
下面是一个通用函数,它将色彩Map表作为输入,并输出相应的循环器。我最初在matplotlib问题中提出了这个解决方案。
“连续”情况下的用法:
“离散”情况下的用法
cvxl0en23#
**2021年4月编辑:**自matplotlib 2.2.0起,键
axes.color_cycle
已被弃用(源代码:API更改).新方法是使用set_prop_cycle
(source: matplotlib.axes.Axes.set_prop_cycle API)实际上,详细信息在matplotlibrc中:它需要一个字符串rep(十六进制或字母或单词,而不是元组)。
第一次
kgsdhlau4#
如果要局部定义某些内容,可以在出图前添加: