python - 使用 set()/setp() 设置 matplotlib 中的未知属性

标签 python matplotlib

我正在 matplotlib 中使用用户可以修改的图形。由于应用程序的设计方式,当用户想要更改图形的属性(例如 xlim)时,输入将在字典中接收,例如 {'xlim ':值}

由于我无法提前知道用户想要更改哪些属性,因此我一直尝试使用 set() 来更改属性;但是,当我像这样处理字典时:

for key, value in changes.iteritems():
            if self.seen[key][1] == 1:  # Key is seen
                self.obj.set(key=value)

我收到错误:AttributeError:'AxesSubplot'对象没有属性'set_key'

是否有其他方法可以在 matplotlib 中设置属性,而我不需要提前知道哪个特定属性将被更改?我真的想不出不使用 set()/setp()

来解决这个问题的方法

最佳答案

cphlewis已经在他的 answer 中指出,问题在于如何将键/值对传递给 set

但是你的问题与matplotlib无关,它是一个常见的python问题:在matplotlib中像set这样定义的函数接收**kwargs中的关键字参数作为字典。键总是字符串!因此,如果你有一个函数 func:

def func(**kwargs):
    pass

并用以下方式调用它:

func(foo='bar')

那么kwargs将是一个字典:{'foo':'bar'}。因此,如果您调用:

key = 'foo'
value = 1
ax.set(key=value)

然后ax.set将收到这个字典:{'key':1}(并且不会{'foo' :1}!)。由于 key 不是 axes 的属性,这会导致错误。

所以你可以这样做:

kwargs_for_set = dict()
for key, value in changes.iteritems():
    if self.seen[key][1] == 1:  # Key is seen
        kwargs_for_set[key] = value
self.obj.set(**kwargs_for_set)

关于python - 使用 set()/setp() 设置 matplotlib 中的未知属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30330606/

相关文章:

python - 如何将等高线图(matplotlib)转换为带标题的 FITS 格式?

python - matplotlib 文本框中多行文本的水平对齐

python - 一一列举验证

python - 搜索我为计算泰勒级数而编写的代码错误

python - 如何使用 Matplotlib 创建折线图

python - 如何调整行或列中的具体数据?

python - 如何为不规则采样的时间序列获得漂亮的刻度标签?

python - 按除法值排序列表

Python 在嵌套列表中搜索以查找值并将值插入到新列表中

python - [Python IDE]在控制台中调用.py文件中定义的函数