Illustration du passage de variables de Octave à R puis de R à Python

M.Laloux septembre 2014

Procédure:

  1. création de la feuille sur mon ordinateur;
  2. utilisation de Octave (clone de Matlab) avec l'extension octavemagic;
  3. définition et tracé de la fonction dans Octave;
  4. utilisation de R avec l'extension rmagic;
  5. tracé de la fonction dans R;
  6. tracé de la fonction dans Python;
  7. création d'un gist avec le fichier local résultant: Octave_R_Python.ipynb;
  8. utilisation du service IPython Notebook viewer ou NBviewer pour afficher cette feuille.

Chargement de l'extension Octave magic

In [1]:
%load_ext oct2py.ipython

Définition et tracé d'une fonction 3D dans [Octave](http://www.gnu.org/software/octave/)

$$\sin(x - 0.5)^2 + cos(y - 0.5)^2$$

In [2]:
%%octave -s 1400,467 -f png

subplot(121);
[x, y] = meshgrid(0:0.1:3);
r = sin(x - 0.5).^2 + cos(y - 0.5).^2;
surf(x, y, r);

Transfert des variables Octave à des variables Python

In [3]:
%octave_pull x y r

Chargement de l'extension R magic

In [4]:
load_ext rpy2.ipython

Transfert des variables Python à des variables R

In [5]:
%Rpush x y r 

Tracé de la fonction avec le package plot3D

In [6]:
%%R
library(plot3D)
surf3D(x = x,
       y = y,
       z = r ,
       colkey=FALSE,
       bty="b2",
       main="fonction définie dans Octave et tracée avec R")

Transfert des variables R à des variables Python

In [7]:
%Rpull x y r 
In [8]:
%matplotlib inline
In [9]:
from mpl_toolkits.mplot3d.axes3d import *
import matplotlib.pyplot as plt
from matplotlib import cm

Tracé de la fonction avec le module matplotlib

In [10]:
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, r, rstride=1, cstride=1, cmap=cm.jet,linewidth=1, antialiased=True)
plt.show()