使用matplotlib构建一些图时,我无法解决这个问题(看似简单)。
我的灰度颜色表示为范围内的整数(0-255 - 更高的数字意味着更暗),在本例中可以简化为df:
colors = pd.DataFrame({'color1': [15], 'color2': [27], 'color3': [89],
'color4': [123], 'color5': [220], 'color6': [100],
'color7': [123], 'color8': [247], 'color9': [255]})
现在通过循环我想用这些颜色更改绘图背景:
fig, ax = plt.subplots(3, 3, figsize=(10, 10), sharey='row', sharex='col')
fig.subplots_adjust(hspace=0, wspace=0)
column = 0
for i in range(3):
for j in range(3):
color = colors.iloc[0, column]
print(f'{i}, {j}: {color}')
# here I used (0.15, 0.16, 0.17) as example.
#But I want to have variable "color" converted into readable color by set_facecolor
ax[i, j].set_facecolor((0.15, 0.16, 0.17))
column += 1
使用matplotlib documentation我只能用这些颜色格式:
Matplotlib识别以下格式以指定颜色:
[0,1]中浮点值的RGB或RGBA元组(例如,(0.1,0.2,0.5) 或(0.1,0.2,0.5,0.3));
十六进制RGB或RGBA字符串(例如,'#0F0F0F'或 '#0F0F0F0F&#39);
[0,1]中浮点值的字符串表示 包含灰度级(例如,' 0.5'); {'',''''' c'中的一个, ' m',' y',' k',' w'};
X11 / CSS4颜色名称;
xkcd颜色的名称 调查;前缀为' xkcd:' (例如,' xkcd:天蓝色');
其中之一 {'标签:蓝色','标签:橙色','标签:绿色','标签:红色','标签:紫色&#39 ;, '标签:棕色','标签:粉红色','标签:灰色','标签:橄榄','标签:青色'} 是来自'T10'分类调色板的Tableau颜色(即 默认颜色循环);
“CN”颜色规格,即' C'接下来是 单个数字,是默认属性周期的索引 (matplotlib.rcParams [' axes.prop_cycle']);索引发生在 艺术家创作时间,如果周期没有,则默认为黑色 包括颜色。
使用那些SO答案:
我转换后将我的代码改写为:
def rgb_int2tuple(rgbint):
return (rgbint // 256 // 256 % 256, rgbint // 256 % 256, rgbint % 256)
colors = pd.DataFrame({'color1': [15], 'color2': [27], 'color3': [89], 'color4': [123],
'color5': [220], 'color6': [100], 'color7': [123], 'color8': [247], 'color9': [255]})
fig, ax = plt.subplots(3, 3, figsize=(10, 10), sharey='row', sharex='col')
fig.subplots_adjust(hspace=0, wspace=0)
column = 0
for i in range(3):
for j in range(3):
color = colors.iloc[0, column]
color = 255 - color
Blue, Green, Red = rgb_int2tuple(color)
print(f'{i}, {j}: {color}\t{Blue}{Green}{Red}')
ax[i, j].set_facecolor((Blue/255, Green/255, Red/255))
column += 1
带我到step1,如何让python知道我的0-255比例是灰色的。
[编辑]:
我再次阅读了matplotlib.colors文档并找到了
- [0,1]中浮点值的字符串表示 包含灰度级(例如,' 0.5');
使用:
我将我的代码改写为:
colors = pd.DataFrame({'color1': [15], 'color2': [27], 'color3': [89], 'color4': [123],
'color5': [220], 'color6': [100], 'color7': [123], 'color8': [247], 'color9': [255]})
fig, ax = plt.subplots(3, 3, figsize=(10, 10), sharey='row', sharex='col')
fig.subplots_adjust(hspace=0, wspace=0)
column = 0
for i in range(3):
for j in range(3):
color = colors.iloc[0, column]
color = 255 - color
color = color / 255
ax[i, j].set_facecolor(str(color))
column += 1
但我怀疑,这是最好的解决方案。