如何在 Rmarkdown 文档中显示来自 Python 代码的几何对象?
How to display a geometric object from Python code in a Rmarkdown document?
我想在编织后在我的 rmarkdown 文档中显示一个点(如 in this tutorial)。
可重现的例子:
---
title: "Reprex"
output: html_document
---
```{python}
# Import necessary geometric objects from shapely module
from shapely.geometry import Point, LineString, Polygon
# Create Point geometric object(s) with coordinates
point1 = Point(2.2, 4.2)
point1
```
使用这段代码,我只得到以下输出:
## <shapely.geometry.point.Point object at 0x0000000026EEA0B8>
如何才能显示点的图像?
此外,我有兴趣在 viewer/plot 窗格中显示它。
首先,不确定这是否重要,但是,following the documentation,我们需要先添加这个块:
```{r setup, include=FALSE}
library(knitr)
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
```
你想要得到的是Jupyter特有的功能。我只能通过 _repr_svg_()
函数将点转换为纯 SVG 来重现它:
```{python}
from shapely.geometry import Point, LineString, Polygon, MultiPoint
point1 = Point(2.2, 4.2)
point2 = Point(7.2, -25.1)
point3 = Point(9.26, -2.456)
point3D = Point(9.26, -2.456, 0.57)
multipoints = MultiPoint([point1, point2, point3, point3D])
svg = multipoints._repr_svg_()
# or, in your case
svg = point1._repr_svg_()
```
然后用R块显示:
```{r}
htmltools::HTML(py$svg)
```
我尝试仅在 Python 端执行此操作(调用 r.HTML()
),这只会导致文本输出。
请注意,这将导致以下警告:
sys:1: ShapelyDeprecationWarning: __len__ for multi-part geometries is deprecated and will be removed in Shapely 2.0. Check the length of the `geoms` property instead to get the number of parts of a multi-part geometry.
不过你可以无视它,它还是画了点:
完整代码:
---
title: "Reprex"
output: html_document
---
```{r setup, include=FALSE}
library(knitr)
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
```
```{python}
from shapely.geometry import Point, LineString, Polygon, MultiPoint
point1 = Point(2.2, 4.2)
point2 = Point(7.2, -25.1)
point3 = Point(9.26, -2.456)
point3D = Point(9.26, -2.456, 0.57)
multipoints = MultiPoint([point1, point2, point3, point3D])
svg = multipoints._repr_svg_()
# or, in your case
svg = point1._repr_svg_()
```
```{r}
htmltools::HTML(py$svg)
```
我想在编织后在我的 rmarkdown 文档中显示一个点(如 in this tutorial)。
可重现的例子:
---
title: "Reprex"
output: html_document
---
```{python}
# Import necessary geometric objects from shapely module
from shapely.geometry import Point, LineString, Polygon
# Create Point geometric object(s) with coordinates
point1 = Point(2.2, 4.2)
point1
```
使用这段代码,我只得到以下输出:
## <shapely.geometry.point.Point object at 0x0000000026EEA0B8>
如何才能显示点的图像?
此外,我有兴趣在 viewer/plot 窗格中显示它。
首先,不确定这是否重要,但是,following the documentation,我们需要先添加这个块:
```{r setup, include=FALSE}
library(knitr)
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
```
你想要得到的是Jupyter特有的功能。我只能通过 _repr_svg_()
函数将点转换为纯 SVG 来重现它:
```{python}
from shapely.geometry import Point, LineString, Polygon, MultiPoint
point1 = Point(2.2, 4.2)
point2 = Point(7.2, -25.1)
point3 = Point(9.26, -2.456)
point3D = Point(9.26, -2.456, 0.57)
multipoints = MultiPoint([point1, point2, point3, point3D])
svg = multipoints._repr_svg_()
# or, in your case
svg = point1._repr_svg_()
```
然后用R块显示:
```{r}
htmltools::HTML(py$svg)
```
我尝试仅在 Python 端执行此操作(调用 r.HTML()
),这只会导致文本输出。
请注意,这将导致以下警告:
sys:1: ShapelyDeprecationWarning: __len__ for multi-part geometries is deprecated and will be removed in Shapely 2.0. Check the length of the `geoms` property instead to get the number of parts of a multi-part geometry.
不过你可以无视它,它还是画了点:
完整代码:
---
title: "Reprex"
output: html_document
---
```{r setup, include=FALSE}
library(knitr)
library(reticulate)
knitr::knit_engines$set(python = reticulate::eng_python)
```
```{python}
from shapely.geometry import Point, LineString, Polygon, MultiPoint
point1 = Point(2.2, 4.2)
point2 = Point(7.2, -25.1)
point3 = Point(9.26, -2.456)
point3D = Point(9.26, -2.456, 0.57)
multipoints = MultiPoint([point1, point2, point3, point3D])
svg = multipoints._repr_svg_()
# or, in your case
svg = point1._repr_svg_()
```
```{r}
htmltools::HTML(py$svg)
```