我尝试使用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()
将投影作为可选参数,所以我不确定我的错误是什么。
2条答案
按热度按时间ukdjmx9f1#
您链接的文档实际上并没有显示
subplot_kw
以这种方式使用。他们显示的是调用dict()
:字符串
如果你打印
subplot_kw=dict(polar=True)
的输出,你会得到:型
注意,
polar
现在已经变成了一个字符串。subplot_kw={projection:'polar'})
没有将projection
定义为字符串,它只是Python现在必须查找的变量名(在这种情况下它不会找到它,但在其他情况下它可能会找到其他东西)。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'}