Python 在函数中更改打印样式表
我正在使用Matplotlib创建许多绘图函数(放在模块中)。不同的功能涉及不同类型的绘图,我希望根据绘图类型有不同的“样式表”(即线、标记、轴等的不同设置)。 但是,我在尝试从绘图函数中使用pyplot.style.use()函数设置预定义的Matplotlib样式时遇到了问题。在主脚本中设置它是可行的,但是我不能为不同的情节设置不同的样式 因此,这段代码设置了我想要的样式Python 在函数中更改打印样式表,python,matplotlib,plot,Python,Matplotlib,Plot,我正在使用Matplotlib创建许多绘图函数(放在模块中)。不同的功能涉及不同类型的绘图,我希望根据绘图类型有不同的“样式表”(即线、标记、轴等的不同设置)。 但是,我在尝试从绘图函数中使用pyplot.style.use()函数设置预定义的Matplotlib样式时遇到了问题。在主脚本中设置它是可行的,但是我不能为不同的情节设置不同的样式 因此,这段代码设置了我想要的样式 # A plot function def my_plot(ax, xd, yd): '''Create a p
# 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()
您可以在您的功能中使用:
with plt.style.context(('ggplot')):
ax.scatter(xd, yd)
这不会更改轴的线宽,因为它仅将样式应用于块内的内容。要设置轴(例如线宽)的样式,您需要在调用子绘图之前使用样式表(如第一个示例中所做的),或者以临时样式包装该样式表
据我所知,样式表不能追溯应用于已创建的对象。要做到这一点,您需要循环您想要更改的属性,并显式地设置它们