РЕДАКТИРОВАТЬ найденное решение. Plot Python Plot 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.

2
Scott Hunter 30 Июн 2019 в 00:46

3 ответа

Лучший ответ

Я нашел здесь ответ Кевина Арсено. 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
Scott Hunter 3 Июл 2019 в 14:43

Я смог запустить ваш код с некоторыми изменениями. Я сломал куски для проверки ошибок. Тебе нужно 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
Bryan Butler 2 Июл 2019 в 21:38

В ваших библиотеках импорта вы должны установить и импортировать 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
0
Bryan Butler 1 Июл 2019 в 19:02