2016-04-05 18 views
7

Ist es möglich, Python Matplotlib-Code verwenden, um Grafik in RStudio zu zeichnen?RStudio mit Python Matplotlib Grafik

z.B. unter Python matplotlib Code:

import numpy as np 
import matplotlib.pyplot as plt 

n = 256 
X = np.linspace(-np.pi,np.pi,n,endpoint=True) 
Y = np.sin(2*X) 

plt.plot (X, Y+1, color='blue', alpha=1.00) 
plt.plot (X, Y-1, color='blue', alpha=1.00) 
plt.show() 

Output Graph wird:

enter image description here

Dann brauche ich eine R Abschlag schreiben diesen Code enthalten und Grafik automatisch nach Drücken der Taste erzeugen.

+0

R kann es leicht machen! Warum musst du Python benutzen? – lucky1928

+0

@ lucky1928 Es ist nur ein Beispiel, Python kann viele andere Dinge tun, die nicht für R richtig sind :-) – beetlej

Antwort

5

Eine mögliche Lösung ist, das Plot als Bild zu speichern und dann die Datei in Markdown zu laden.

### Call python code sample 
```{r,engine='python'} 
import numpy as np 
import matplotlib.pyplot as plt 

n = 256 
X = np.linspace(-np.pi,np.pi,n,endpoint=True) 
Y = np.sin(2*X) 

fig, ax = plt.subplots(nrows=1, ncols=1) 
ax.plot (X, Y+1, color='blue', alpha=1.00) 
ax.plot (X, Y-1, color='blue', alpha=1.00) 
#plt.show() 
fig.savefig('foo.png', bbox_inches='tight') 
print "finished" 
``` 
Output image: 
![output](foo.png) 

#### The End 

Ausgang:

enter image description here

+0

Ich hatte heute versucht, Haken in Knitr zu verwenden, um diese Lösung automatischer zu machen, aber das Problem war, dass die Haken sind in R geschrieben, scheinen also keinen Zugriff auf den Python-Code zu haben. Vielleicht gibt es am Ende eine Möglichkeit, etwas Python-Code zu schreiben. –

4
  1. install.packages ('devtools') zuerst erhalten install_github Funktion
  2. install_github ("rstudio/reticulate") installieren Sie die Entwickler-Version von reticulate
  3. In r Abschrift doc, verwenden Sie den Code unten, um die Funktion zu aktivieren.

    ```{r setup, include=FALSE}
    library(knitr)
    library(reticulate)
    knitr::knit_engines$set(python = reticulate::eng_python)
    ```

Probieren Sie es aus, Sie bekommen, was Sie wollen und brauchen kein Bild zu speichern.

Imgur