在matplotlib中使用subplot_kw在子图中创建极坐标投影

qeeaahzv  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(99)

我尝试使用matplotlib.pyplot.subplots()创建极坐标投影,但在尝试将字典传递给matplotlib.pyplot.subplots()时出现错误projection is not defined
我的代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(nrows=1, ncols=2, subplot_kw={projection:'polar'})

字符串
然而,plt.subplot(1,1,1, projection='polar')按预期工作。plt.subplots()的文档说subplot_kw中的字典将传递给add.subplot()add.subplot()将投影作为可选参数,所以我不确定我的错误是什么。

ukdjmx9f

ukdjmx9f1#

您链接的文档实际上并没有显示subplot_kw以这种方式使用。他们显示的是调用dict()

fig, axes = plt.subplots(2, 2, subplot_kw=dict(polar=True))

字符串
如果你打印subplot_kw=dict(polar=True)的输出,你会得到:

{'polar': True}


注意,polar现在已经变成了一个字符串。subplot_kw={projection:'polar'})没有将projection定义为字符串,它只是Python现在必须查找的变量名(在这种情况下它不会找到它,但在其他情况下它可能会找到其他东西)。

f0brbegy

f0brbegy2#

这主要是为了澄清原帖中的错误,并完成前面的答案。
根据您引用的plt.subplots()文档,参数subplot_kw应该是dictionary。有两种等效的方法可以做到这一点。

选项1:

使用函数dict()创建要传递的字典:
subplot_kw = dict(projection = 'polar')

选项二:

直接传入具有正确键值结构subplot_kw = {'projection' : 'polar'}的字典
请注意,在第一个选项中,单词projection不需要是字符串,您可以使用和等于=符号。函数dict将完成从其参数格式化字典的工作。您可以通过执行以下操作来验证这一点:
>>>dict(projection = 'polar')
Output: {'projection' : 'polar'}

相关问题