如何找到matplotlib样式名称?

是否有可能知道当前matplotlib样式的名称?我知道我可以使用plt.style.available获得所有可用样式的列表,但我想要的是可以获取当前正在使用的样式的名称。我在Spyder的python 3.5的ipython控制台工作,但如果回答这个问题取决于我的工作环境,我会感到惊讶:)如何找到matplotlib样式名称?

回答:

看着the source of plt.style.use,我没有看到任何使用新风格做任何事情来存储正在使用的风格的名称。

我想到了手动检查当前rcParams对每一个可用的风格,这样的事情:

import matplotlib.pyplot as plt 

for style in plt.style.available:

for key in plt.style.library[style]:

if plt.rcParams[key] != plt.style.library[style][key]:

break

else:

print('Current style is consistent with {}.'.format(style))

但没有为我的默认样式匹配可用样式。然后,我也印错配的原因:第二项

Discarding style seaborn-paper: 0.6 vs 0.4 for key xtick.minor.width 

Discarding style seaborn-whitegrid: w vs white for key figure.facecolor

Discarding style seaborn-talk: 0.8 vs 1.3 for key grid.linewidth

注:输出

for style in plt.style.available: 

for key in plt.style.library[style]:

val_now,val_style = plt.rcParams[key],plt.style.library[style][key]

if val_now != val_style:

print('Discarding style {}: {} vs {} for key {}'.format(style,val_now,val_style,key))

break

else:

print('Current style is consistent with {}.'.format(style))

部分w VS white。现在这是一个问题。命名的颜色不容易通过不同的名称或RGBA值等同于相同的颜色。

然后我想到了使用matplotlib.colors.to_rgba()转换每种颜色,但是如果您想要正确地执行此操作,则需要完全解析参数,包括像这样的宝石:

Discarding style grayscale: figure.facecolor,w vs figure.facecolor,0.75 

即使后者的值对应白色,我们需要先分析该值并找到埋藏着里面的颜色。

对我来说,唯一的安全实现似乎是让plt.style.use在某处存储样式的名称。但是,如果手动更改了rcParams中的任何内容,会发生什么情况?那么不会有这是一种当前加载的样式。这是反对存储样式名称的反驳。每当参数发生变化时,都必须进行检查,使最后的plt.style.use调用的样式名称失效。我不确定你的问题有明显的解决方案。

以上是 如何找到matplotlib样式名称? 的全部内容, 来源链接: utcz.com/qa/262316.html

回到顶部