gpt4 book ai didi

python - 如何找到 matplotlib 样式名称?

转载 作者:太空狗 更新时间:2023-10-30 00:05:15 26 4
gpt4 key购买 nike

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

最佳答案

查看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))

但是没有一个可用样式与我的默认样式相匹配。然后我还打印了不匹配的原因:

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))

部分输出:

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

注意第二项:wwhite。现在这是一个问题。命名的颜色不容易通过不同的名称或 RGBA 值等来测试相同的颜色是否相等。

然后我考虑使用 matplotlib.colors.to_rgba() 转换每种颜色,但如果你想正确地做到这一点,你需要完全解析参数,包括像这样的 gems:

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

即使后一个值对应于白色,我们也需要先解析该值并找到埋在其中的颜色。

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

关于python - 如何找到 matplotlib 样式名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com