import matplotlib.pyplot as plt
import numpy as np
num_plots = 20
# Have a look at the colormaps here and decide which one you'd like:
# http://matplotlib.org/1.2.1/examples/pylab_examples/show_colormaps.html
colormap = plt.cm.gist_ncar
plt.gca().set_prop_cycle(plt.cycler('color', plt.cm.jet(np.linspace(0, 1, num_plots))))
# Plot several different functions...
x = np.arange(10)
labels = []
for i in range(1, num_plots + 1):
plt.plot(x, i * x + 5 * i)
labels.append(r'$y = %ix + %i$' % (i, 5*i))
# I'm basically just demonstrating several different legend options here...
plt.legend(labels, ncol=4, loc='upper center',
bbox_to_anchor=[0.5, 1.1],
columnspacing=1.0, labelspacing=0.0,
handletextpad=0.0, handlelength=1.5,
fancybox=True, shadow=True)
plt.show()
import matplotlib.pyplot as plt
import numpy as np
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
for i in range(1,15):
ax1.plot(np.array([1,5])*i,label=i)
需要的代码:
colormap = plt.cm.gist_ncar #nipy_spectral, Set1,Paired
colors = [colormap(i) for i in np.linspace(0, 1,len(ax1.lines))]
for i,j in enumerate(ax1.lines):
j.set_color(colors[i])
ax1.legend(loc=2)
import matplotlib.pyplot as plt
# _____ VV______
my_colors = plt.rcParams['axes.prop_cycle']()
# note that we CALLED the prop_cycle ‾‾‾‾‾‾ΛΛ‾‾‾‾‾‾
fig, axes = plt.subplots(2,3)
for ax in axes.flatten(): ax.plot((0,1), (0,1), **next(my_colors))
In [14]: fig, axes = plt.subplots(2,3)
In [15]: for ax, short_color_name in zip(axes.flatten(), 'brgkyc'):
...: ax.plot((0,1), (0,1), short_color_name)
另一种可能性是示例化一个cycler对象
from cycler import cycler
my_cycler = cycler('color', ['k', 'r']) * cycler('linewidth', [1., 1.5, 2.])
actual_cycler = my_cycler()
fig, axes = plt.subplots(2,3)
for ax in axes.flat:
ax.plot((0,1), (0,1), **next(actual_cycler))
...
# Plot several different functions...
labels = []
plotHandles = []
for i in range(1, num_plots + 1):
x, = plt.plot(some x vector, some y vector) #need the ',' per ** below
plotHandles.append(x)
labels.append(some label)
plt.legend(plotHandles, labels, 'upper left',ncol=1)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from skspatial.objects import Line, Vector
for count in range(0,len(LineList),1):
Line_Color = np.random.rand(3,)
Line(StartPoint,EndPoint)).plot_3d(ax,c="Line"+str(count),label="Line"+str(count))
plt.legend(loc='lower left')
plt.show(block=True)
from random import choice
import matplotlib.pyplot as plt
from matplotlib.colors import mcolors
# Get full named colour map from matplotlib
colours = mcolors._colors_full_map # This is a dictionary of all named colours
# Turn the dictionary into a list
color_lst = list(colours.values())
# Plot using these random colours
for n, plot in enumerate(plots):
plt.scatter(plot[x], plot[y], color=choice(color_lst), label=n)
7条答案
按热度按时间ca1c2owp1#
Matplotlib默认情况下会这样做。
例如:
而且,正如你可能已经知道的,你可以很容易地添加一个图例:
如果要控制将循环通过的颜色:
如果您不熟悉matplotlib,本教程是一个很好的开始。
编辑:
首先,如果你有很多(〉5)的东西,你想在一个图上绘制,要么:
1.将它们放在不同的图上(考虑在一个图上使用几个子图),或
1.使用颜色以外的东西(i.即标记样式或线条粗细)来区分它们。
否则,你会得到一个非常混乱的情节!对那些将要阅读你正在做的任何事情的人好一点,不要试图把15个不同的东西塞进一个数字里!!
除此之外,许多人在不同程度上都是色盲,区分无数微妙不同的颜色对更多的人来说是困难的。
话虽如此,如果你真的想把20条线放在一个轴上,有20种相对不同的颜色,这里有一种方法:
dfuffjeb2#
稍后设置
如果你不知道你要绘制的图的数量,你可以改变颜色,一旦你绘制了它们,使用
.lines
直接从图中检索数字,我使用这个解决方案:一些随机数据
需要的代码:
结果如下:
mutmk8jj3#
OP写道
[...]我必须用不同的颜色来标识每个图,这些颜色应该由[Matplotlib]自动生成。
但是……Matplotlib会自动为每条不同的曲线生成不同的颜色
那为什么是OP请求如果我们继续读下去,我们有
你能给我一个方法,把不同的颜色不同的情节在同一个图?
这是有意义的,因为每个图(Matplotlib中的每个
axes
)都有自己的color_cycle
(或者更确切地说,在2018年,它的prop_cycle
),并且每个图(axes
)以相同的顺序重复使用相同的颜色。如果这是原始问题的含义,一种可能性是明确地为每个情节命名不同的颜色。
如果图(经常发生)是在循环中生成的,我们必须有一个额外的循环变量来覆盖Matplotlib * 自动 * 选择的颜色。
另一种可能性是示例化一个cycler对象
请注意,
type(my_cycler)
是cycler.Cycler
,但type(actual_cycler)
是itertools.cycle
。zpqajqem4#
我想对上一篇文章中给出的最后一个循环答案做一个小小的改进(那篇文章是正确的,仍然应该被接受)。在标记最后一个示例时所做的隐含假设是,
plt.label(LIST)
将标签编号X放在LIST
中,其中行对应于第X次调用plot
的行。我以前遇到过这种方法的问题。根据matplotlib文档构建图例并自定义图例标签的推荐方法(http://matplotlib.org/users/legend_guide。html#adjusting-the-order-of-legend-item)是为了让标签与您认为的确切图沿着,从而产生一种温暖的感觉:**:Matplotlib Legends not working
1sbrub3j5#
Matplot颜色你的阴谋与不同的颜色,但如果你想把特定的颜色
monwx1rj6#
上面的代码可以帮助您以随机方式添加具有不同颜色的3D线条。您的彩色线也可以在label="中提到的图例的帮助下引用。..”参数。
ao218c7q7#
老实说,我最喜欢的方法很简单:现在这对任意多的图都不起作用,但它可以达到1163。这是通过使用matplotlib的所有命名颜色的Map,然后随机选择它们。