Разрешает ли Rmarkdown вязание участков matplotlib?Если да, вы поможете мне решить проблему? - PullRequest
1 голос
/ 30 июня 2019

РЕДАКТИРОВАТЬ Найденное решение. Графики Python Графики Inline

Я делал блокнот Rmarkdown, чтобы делать заметки о своих занятиях на питоне. В RStudio я смог без проблем связать документ, содержащий мой код на Python, с HTML, пока я не начал печатать данные с помощью matplotlib. Любопытно, что графики правильно генерируются внутри фрагментов кода. Однако после вязания каждый раз выдает ошибку на 80%.

Вот мой пример кода:

---
title: "Python Plot"
output: html_document
---

```{r setup, include=FALSE}
library(knitr)
knitr::opts_chunk$set(echo = TRUE)
library(reticulate) #Allows for Python to be run in chunks
```


```{python, eval=F}
import numpy as np
trees = np.array(r.trees) #Imported an internal R dataset. It got rid of headers and first row. Don't know how to deal with that right now.
type(trees)
np.shape(trees)
print(trees[1:6,:])

import matplotlib.pyplot as plt
plt.plot(trees[:,0], trees[:,1])
plt.show()
plt.clf() #Reset plot surface
```

Опять же, этот график получается очень хорошо при обработке внутри фрагмента, но не вяжет. Сообщение об ошибке гласит:

"This application failed to start because it could not find or load the Qt platform plugin "windows" in ",

Reinstalling the application may fix this problem."

Я удалил и переустановил Rstudio и Python и продолжаю получать тот же результат. Я нахожу странным то, что он работает внутри блока, но не связан с HTML. Весь мой другой код на python вяжется просто отлично.

У меня есть

python 3.7.3 (по умолчанию, 27 марта 2019 г., 17:13:21) [MSC v.1915 64 бит (AMD64)]

Rstudio Версия 1.2.1335.

Я читал другие решения. Я считаю, что libEGL.dll находится там же, где и все остальные QT5 * .dll.

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

Мне удалось запустить ваш код с некоторыми изменениями. Я сломал куски для проверки ошибок. Вам нужно import numpy as np, а я добавил других. Вот код, который я получил на работу. Кроме того, я использую виртуальные среды conda, чтобы среда Python была точной. Вот что сработало:

---
title: "test"
author: "Bryan Butler"
date: "7/2/2019"
output: html_document
---

```{r setup, include=FALSE}
library(knitr)
knitr::opts_chunk$set(echo = TRUE)
library(reticulate) #Allows for Python to be run in chunks
use_condaenv('timeseries')
```

```{python import}
import PyQt5
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
import matplotlib.pyplot as plt
```

```{python, test}
trees = np.array(r.trees) #Imported an internal R dataset. It got rid of headers and first row. Don't know how to deal with that right now.
type(trees)
np.shape(trees)
print(trees[1:6,:])
```

```{python plot}
plt.plot(trees[:,0], trees[:,1])
plt.show()
plt.clf() #Reset plot surface
```
0 голосов
/ 03 июля 2019

Я нашел ответ здесь от Кевина Арсено. Plot Python Plot Inline

Я бы не назвал это дубликатом, потому что проблема была другой, но решение работало для обеих проблем.

Необходимо добавитьследующий код:

import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'

Вот мой обновленный рабочий код.Он похож на оригинальный вопрос и дополнен фрагментом python для импорта, предложенным Брайаном.

---
title: "Python Plot"
output: html_document
---

```{r setup, include=FALSE}
library(knitr)
knitr::opts_chunk$set(echo = TRUE)
library(reticulate) #Allows for Python to be run in chunks
```

```{python import}
import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'
import numpy as np
import matplotlib.pyplot as plt


```{python, eval=TRUE}

trees = np.array(r.trees) #Imported an internal R dataset. It got rid of headers and first row. Don't know how to deal with that right now.
type(trees)
np.shape(trees)
print(trees[1:6,:])


plt.plot(trees[:,0], trees[:,1])
plt.show()
plt.clf() #Reset plot surface
```
0 голосов
/ 01 июля 2019

В ваших библиотеках импорта вы должны установить и импортировать PyQT5 в вашу среду Python. Так, например, мои первые чанки выглядят следующим образом, первая строка # Base Libraries равна import PyQt5:

---
title: "Cancellations TS"
author: "Bryan Butler"
date: "7/1/2019"
output:
    html_document:
    toc: false
    toc_depth: 1
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, cache.lazy = FALSE)
```

# <strong>Time Series of Auto Policies</strong> {.tabset .tabset-fade .tabset-pills}


<style>
  .main-container {
    max-width: 1200px !important;
    margin-left: auto;
    margin-right: auto;
  }
</style>

{r, loadPython}
library(reticulate)
use_condaenv('timeseries')


## Load Python
{python importLibaries}

# Base libraries
import PyQt5
import pandas as pd
from pandas import Series, DataFrame
from pandas.plotting import lag_plot


import numpy as np
import pyodbc
...