更改matplotlib样式表中的颜色数

时间:2017-01-06 19:26:47

标签: python matplotlib colormap

我正在使用matplotlib为出版物绘制几个图表,我需要所有具有相同风格的图表。有些图表有超过6个类别,我注意到,默认情况下,它不会绘制超过6种不同的颜色。 7或更多,我开始有重复的颜色。

e.g。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
plt.style.use('seaborn-muted')

df2= pd.DataFrame(np.random.rand(10,8))
df2.plot(kind='bar',stacked=True)
plt.legend(fontsize=13,loc=1)
plt.show()

可能有认知原因不包括超过6种不同的颜色,但如果我需要,我该怎么办?我尝试了不同的样式表(seaborn,ggplot,classic),但似乎都有相同的#34;限制"。

我是否需要更改色彩图/样式表?理想情况下,我想使用定性色图(我正在绘制的类别中没有顺序)并使用预先存在的颜色图...我选择颜色不是很好。

谢谢!

2 个答案:

答案 0 :(得分:4)

默认情况下,matplotlib将循环显示一系列六种颜色。如果要更改默认颜色(或颜色数),可以使用cycler循环显示所需的颜色而不是默认颜色。

from cycler import cycler

% Change the default cycle colors to be red, green, blue, and yellow
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y']))

demo here

更好的方法是在创建plot时手动指定绘图颜色,这样不是每个绘图都必须使用相同的颜色。

plt.plot([1,2,3], 'r')
plt.plot([4,5,6], 'g')
plt.plot([7,8,9], 'b')
plt.plot([10,11,12], 'y')

或者您可以在创建后更改颜色

h = plt.plot([1,2,3])
h.set_color('r')

答案 1 :(得分:3)

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

colors = plt.cm.jet(np.linspace(0, 1, 10))

df2= pd.DataFrame(np.random.rand(10,8))
df2.plot(kind='bar',color=colors, stacked=True)
plt.legend(fontsize=13,loc=1)

这基本上是从Plotting with more colors in matplotlib复制的。查看colormap及其example page

的文档