python - 更改函数内的绘图样式表

标签 python matplotlib plot

我正在使用 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()

最佳答案

您可以使用temporary styling在您的职能范围内:

with plt.style.context(('ggplot')):
    ax.scatter(xd, yd)

这不会改变轴的线宽,因为它仅将样式应用于 block 内的内容。要设置轴的样式(例如线宽),您需要在 subplots 调用之前使用样式表(就像您在第一个示例中所做的那样),或者将其包装在临时文件中风格。

据我所知,样式表不能追溯应用于已经创建的对象。为此,您需要循环遍历要更改的属性并显式设置它们。

关于python - 更改函数内的绘图样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400449/

相关文章:

python - 如何使用字幕在多行中写一个情节标题?

python - 用 matplotlib 绘图 : TypeError: float() argument must be a string or a number

python - python中的简单拟合回归线

r - 将箭头放在 R 中线的中间

Python:搜索和删除嵌套的字典列表

python - Django,为什么我的 jquery url View 重复?

python - 在Python中将数据从2D绘制到3D

python - Matplotlib xticks 字体大小(如果是字符串)

python - Tensorflow:如何在Python中获取图形输入和输出?

r - 在R中绘制矩阵方程