Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改matplotlib样式表中的颜色数_Python_Matplotlib_Colormap - Fatal编程技术网

Python 更改matplotlib样式表中的颜色数

Python 更改matplotlib样式表中的颜色数,python,matplotlib,colormap,Python,Matplotlib,Colormap,我正在使用matplotlib为出版物绘制多个图形,我需要所有图形都具有相同的样式。有些图有6个以上的类别,我注意到,默认情况下,它不会绘制超过6种不同的颜色。7或更多,我开始有重复的颜色 e、 g 不包括6种以上不同颜色可能有认知上的原因,但如果我需要,我该怎么做呢?我尝试过不同的样式表(seaborn、ggplot、classic),但似乎都有相同的“限制” 我需要更改颜色映射/样式表吗?理想情况下,我想使用定性颜色图(我正在绘制的类别中没有顺序)并使用预先存在的颜色图。。。我不太会选颜色

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

e、 g

不包括6种以上不同颜色可能有认知上的原因,但如果我需要,我该怎么做呢?我尝试过不同的样式表(seaborn、ggplot、classic),但似乎都有相同的“限制”

我需要更改颜色映射/样式表吗?理想情况下,我想使用定性颜色图(我正在绘制的类别中没有顺序)并使用预先存在的颜色图。。。我不太会选颜色


谢谢

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

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']))

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

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')

这基本上是复制自。检查的文档及其。

请注意,传递给
cycler()
的颜色列表可以是任意长度,也可以是所支持的任何格式。例如,我在我的
matplotlibrc
循环器(“颜色”、“348ABD、7A68A6、A60628、467821、CF4457、188487、E24A33”)
-蓝色、紫色、红色、绿色、粉色、青绿色、橙色。十六进制颜色可能包括也可能不包括
#
散列,可以是逗号分隔的字符串(如我的)或列表。你也可以使用。它很有效!因为我想要一个定性的颜色贴图(jet不是,这是非常不鼓励的),所以我将其更改为matplotlib中可用的定性颜色贴图之一“配对”
h = plt.plot([1,2,3])
h.set_color('r')
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)