修改matplotlib内置颜色
我想要修改matplotlib的默认颜色,但不想创建新的颜色循环或调色板。主要原因是我想重新绘制已经做好的图表,而不想去找那些字符串,比如'b'、'r'等等,想要用更现代的颜色,比如金属蓝等。
我发现这些内置颜色的RGB代码似乎是在matplotlib.colors.ColorConverter.colors
里定义的,但修改这个字典对我没有帮助。创建一个新的颜色循环也无法让我在旧的ipython笔记本中使用。
在我考虑去修改matplotlib的源代码之前,有没有什么好的建议?
谢谢,
JC
1 个回答
2
出于很多原因,我觉得这样做不好...
不过,如果你真的想这么做,可以修改 matplotlib.colors.colorConverter.colors
,而不是 matplotlib.colors.ColorConverter.colors
。
colorConverter
是一个单例(其实只是个约定)实例,matplotlib 在后台使用它来把颜色的描述转换成 rgb 格式。
举个例子:
import matplotlib.pyplot as plt
import matplotlib.colors as colors
# Evil!!
colors.colorConverter.colors['b'] = (0.1, 1.0, 0.2)
# You may need to clear the cache that ColorConverter keeps if 'b'
# has alreadly been used...
colors.colorConverter.cache = {}
plt.plot(range(10), color='b')
plt.show()
要注意,修改 colorConverter.colors
只会改变单个字母的颜色缩写的效果!使用 "blue"
还是会得到蓝色。
如果你真的想搞点花样,就需要修改 colorConverter.to_rgb
了:
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
# Evil!!
colors.colorConverter.to_rgb = lambda x: tuple(np.random.random(3))
plt.plot(range(10), color='pink')
plt.show()