如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]

Posted

技术标签:

【中文标题】如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]【英文标题】:How to change the default plotting color in matplotlib - spyder? [duplicate] 【发布时间】:2019-03-29 09:31:21 【问题描述】:

我在Spyder 中使用matplotlib 来简单地绘制正弦和余弦。当我运行这段代码时

import matplotlib.pyplot as plt
import numpy as np

x1 = np.arange(0,4*np.pi,0.1)   # start,stop,step
y1 = np.sin(x1)
z1 = np.cos(x1)
plt.plot(x1,y1, z1)
plt.show()

我明白了这个情节。

我不喜欢我在上面的情节中看到的默认绘图颜色。但是,我想用好看的颜色来改变它们。我用plt.style.use('classic')试了一下,如下

import matplotlib.pyplot as plt
import numpy as np
plt.style.use('classic')

x1 = np.arange(0,4*np.pi,0.1)   # start,stop,step
y1 = np.sin(x1)
z1 = np.cos(x1)
plt.plot(x1,y1, z1)
plt.show()

但这似乎又在墙外添加了灰色背景,如您所见,此外它似乎缩小了情节线的空间以接触 X 轴,这似乎有点奇怪。

matplotlib 中是否有任何优雅的方法可以做到这一点,而在情节之外没有灰色背景并且不缩小空间?

【问题讨论】:

plt.plot(x1,y1, 'b-') 将绘制蓝线,g- 将绘制绿线等。 【参考方案1】:

matplotlib 升级到版本 2 时发生了相当多的变化。使用 plt.style.use('classic') 会更改回这次升级之前的默认值。一些例子是背景颜色的变化和默认 x 和 y 轴边距的添加,这可以在问题的两个图中看到。

matplotlib 版本 2 及更高版本中的颜色循环也发生了变化。阅读documentation 向您展示了如何在不影响其他参数(例如背景颜色)的情况下将颜色循环改回:

import matplotlib as mpl
from cycler import cycler
mpl.rcParams['axes.prop_cycle'] = cycler(color='bgrcmyk')

您的代码如下所示:

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

mpl.rcParams['axes.prop_cycle'] = cycler(color='bgrcmyk')

x1 = np.arange(0,4*np.pi,0.1)   # start,stop,step
y1 = np.sin(x1)
z1 = np.cos(x1)
plt.plot(x1,y1, z1)

plt.show()

【讨论】:

但这给出了另一个错误AttributeError: module 'matplotlib' has no attribute 'plot'。你试过运行它吗? @Brown 我已经用我运行的代码和我得到的结果更新了答案 谢谢,我已将其标记为已接受的答案。你也可以通过投票来帮我一个忙:-) 很高兴能提供帮助 :-) 并且很好地完成了第一个问题!【参考方案2】:
import matplotlib.pyplot as plt
import numpy as np

x1 = np.arange(0,4*np.pi,0.1)   # start,stop,step
y1 = np.sin(x1)
z1 = np.cos(x1)
plt.plot(x1,y1,'blue')
plt.plot(x1,z1,'red')
plt.show()

注意,您不必在一个情节中做所有事情 - 您可以plot 多次,它们将与show 同时显示

【讨论】:

以上是关于如何更改 matplotlib - spyder 中的默认绘图颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spyder(或任何其他调试器)的 ipdb 调试器中强制 Matplotlib 进行绘制?

使用 matplotlib 在 Spyder 中进行交互式(?)绘图

Anaconda matplotlib 升级后 Spyder 停止工作

spyder 4.0.1 的 Matplotlib 问题

spyder控制台中的Matplotlib后端错误?

matplotlib 中的动画在 spyder 中不起作用