Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using subplot_kw in matplotlib to create a polar projection in subplots

I'm trying to create a polar projection using matplotlib.pyplot.subplots() but I get the error projection is not defined when I try to pass a dictionary to matplotlib.pyplot.subplots()

My code:

import matplotlib.pyplot as plt

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

However plt.subplot(1,1,1, projection='polar') works as expected. The documentation for plt.subplots() says that the dictionary in subplot_kw will be passed to add.subplot() which takes projection as a optional parameter so I'm not sure what my mistake is.

like image 468
Jason Avatar asked Sep 06 '25 03:09

Jason


1 Answers

The docs that you linked don't actually show subplot_kw being used in that way. What they show is calling dict():

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

If you print the output of subplot_kw=dict(polar=True), you get:

{'polar': True}

Notice that polar has now become a string. subplot_kw={projection:'polar'}) does not define projection as a string, it's just a variable name that Python now has to look up (and it won't find it in this case, but it may find something else in other cases).

like image 178
roganjosh Avatar answered Sep 09 '25 00:09

roganjosh