我使用Matplotlib创建了许多绘图函数(放在模块中)。不同的功能指的是不同类型的情节,我希望有不同的样式表" (即线,标记,轴等的不同设置)取决于绘图类型。 但是,在尝试使用绘图函数中的pyplot.style.use()函数设置预定义的Matplotlib样式时遇到问题。在主脚本中设置它可以工作,但是我不能为不同的图表设置不同的样式。
所以,这段代码设置了我想要的样式
# A plot function
def my_plot(ax, xd, yd):
'''Create a plot'''
ax.scatter(xd, yd)
# Main Script
import numpy as np
import matplotlib.pyplot as plt
# Set plot style sheet in main script
plt.style.use('ggplot')
fig, ax = plt.subplots(1)
x = np.arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
sc = my_plot(ax, x, y)
plt.show()
但是,下面没有,虽然在函数调用之后rc参数设置已经改变,所以从python中再次运行脚本会相应地改变图形的样式。
# A plot function
def my_plot(ax, xd, yd):
'''Create a plot'''
# Set plot style sheet in function
plt.style.use('ggplot')
ax.scatter(xd, yd)
# Main Script
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1)
x = np.arange(1, 101)
y = 20 + 3 * x + np.random.normal(0, 60, 100)
sc = my_plot(ax, x, y)
plt.show()
答案 0 :(得分:3)
您可以在函数中使用temporary styling:
with plt.style.context(('ggplot')):
ax.scatter(xd, yd)
这不会改变轴的线宽,因为它只将样式应用于块内的样式。要设置轴的样式(例如线宽),您需要在use
调用之前subplots
样式表(如在第一个示例中所做的那样),或者以临时样式包装它。
据我所知,样式表不能追溯性地应用于已经创建的对象。为此,您需要遍历要更改的属性并明确设置它们。