I have a Rmarkdown document containing some python code chunks using the reticulate
library. The code executes output perfectly; however, how would I cross-reference the generated plots in the text using its label? I am using bookdown::pdf_documents2
etc, and have no issue with inline reference of R chunks using the standard \@ref(fig:my-plot)
.
An MWE would be:
```{python, my-plot}
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.arange(10)
plt.figure()
plt.plot(x, y)
plt.show()
```
In Figure \@ref(fig:my-plot)
....
I have tried without prepending the chunk type (fig, etc.)
I understand I can save the image to file and include it with knitr
as a subsequent R chunk, but it would be preferable to do it through the python chunk alone.
I must have been making an error when previously attempting fig.cap
within the chunk, as Daniel correctly suggests in the question comments. Attempting with this again, I can cross-reference perfectly with the python
chunk across all HTML, PDF and word outputs. The updated MWE is:
```{python, my-plot, fig.cap="My Caption"}
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.arange(10)
plt.figure()
plt.plot(x, y)
plt.show()
```
In Figure \@ref(fig:my-plot)
...
Each of the outputs in the YAML header required the varying bookdown::
options. For PDF (bookdown::pdf_document2
), for word (bookdown::word_document2
) and Rmdformats in my case, the option of use_bookdone: true
.