不能在matplotlib中改变线条的颜色

时间:2016-01-07 07:29:22

标签: python-3.x matplotlib

import matplotlib
matplotlib.rc("lines", marker="x", linewidth=5, color="r")
import pylab
pylab.plot([1,2,3])
pylab.show()

描述

  • 我需要一条红线,但它不是

enter image description here

  • 我改变了线条的宽度,它有效。
  • 环境是windows,ide是prcharm。
  • python3.5。我用过Anaconda3。

2 个答案:

答案 0 :(得分:2)

不应该如何使用matplotlib.rc。它的全局配置更多。我也不认为color单独是一个有效的参数。

对于单个情节,请执行以下操作:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6], linestyle='-', color='r', linewidth=2)
fig.savefig('plot_with_red_line.png', dpi=100)

另外,不要使用pylab界面。使用pyplot。

答案 1 :(得分:0)

默认情况下,颜色由Cycler对象指定。在pyplot.plot()(或axes.Axes.plot())命令中手动指定颜色(请参见Paul's answer)将更改单个图的颜色 。如果要更改所有折线图的默认颜色 ,请继续阅读。

我将从一个the matplotlib documentation派生的例子开始:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

plt.ion()  # Interactive mode on.
data = np.random.randn(50)

# Want to change default line color to cyan.
mpl.rc('lines', linewidth=4, color='c')

# Plot; linewidth changes, color doesn't.
plt.plot(data)

Color is still <code>'tab:blue'</code>, not cyan.

颜色没有根据需要变为青色。

现在,我在示例matplotlibrc文件的bottom of the page中注意到以下行:

#lines.color : C0 ## has no affect on plot(); see axes.prop_cycle

事实证明,为了在默认的matplotlib图中循环显示颜色,将循环器分配给axes.Axes对象。我们需要provide a different cycler和我们想要的color属性。继续上一个示例...

plt.close()

from cycler import cycler

custom_cycler = (cycler(color=['c', 'm', 'y', 'k']) + cycler(linewidth=[1, 2, 3, 4]))
mpl.rc('axes', prop_cycle=custom_cycler)

for i in range(5):
    plt.plot(data + i)

Cycler has changed axes properties.

哇!我们根据需要更改了默认颜色循环,并在此过程中了解了Cyclers,它也可以循环显示其他属性,例如linewidth。当然,如果您希望所有图都是一种颜色,则只需为Cycler提供一个包含单个值的列表即可。


注意::还可以通过axes.Axes.set_prop_cycle()来更改axes.Axes实例的属性循环器。

注意2: As Paul said,请不要使用pylab;使用pyplot。 pylab is deprecated