web-dev-qa-db-fra.com

intrigamment à l'intérieur du cahier jupyter python

Quelqu'un sait-il comment utiliser plotly dans jupyter notebook En utilisant python?

La documentation n'est pas très bien organisée, du moins pas de mon point de vue.

Par exemple, je peux exécuter le code suivant, mais il génère un graphique dans un fichier HTML accessible à l'extérieur de jupyter notebook. Existe-t-il un moyen de rendre le graphique à l'intérieur du bloc-notes?

Ce qui n'est pas non plus clair pour moi (car la documentation est pauvre) est que faut-il des informations d'identification pour utiliser plotly pour les tracés à l'intérieur de jupyter notebook? Les informations d'identification sont-elles uniquement requises pour l'hébergement des parcelles sur leur cloud et rien de plus?

De plus, je trouve qu'il n'y a pas de vraie documentation de cufflinks. Tout ce qu'il dit, c'est qu'il facilite l'utilisation de plotly avec pandas dataframes. Mais pour quelqu'un qui n'est pas développeur, ce serait bien s'il y avait une documentation détaillée expliquant pourquoi cela est nécessaire et que fait-il exactement qui facilite la vie.

import plotly.plotly as py
from plotly.graph_objs import *

trace0 = Scatter(
  x=[1, 2, 3, 4],
  y=[10, 15, 13, 17]
)
trace1 = Scatter(
  x=[1, 2, 3, 4],
  y=[16, 5, 11, 9]
)
data = Data([trace0, trace1])

plotly.offline.plot(data, filename = 'basic-line')

/Users/blahblah/anaconda/lib/python2.7/site-packages/plotly/offline/offline.py:433: UserWarning:

Your filename `basic-line` didn't end with .html. Adding .html to the end of your file.

'file:///Users/blahblach/Box Sync/NS/NBooks/basic-line.html'
In [ ]:

Si je change la dernière ligne du code en:

py.iplot(data, filename = 'basic-line')

J'obtiens l'erreur d'identification:

PlotlyLocalCredentialsError: 
Couldn't find a 'username', 'api-key' pair for you on your local machine. To sign in temporarily (until you stop running Python), run:
>>> import plotly.plotly as py
>>> py.sign_in('username', 'api_key')

Even better, save your credentials permanently using the 'tools' module:
>>> import plotly.tools as tls
>>> tls.set_credentials_file(username='username', api_key='api-key')

For more help, see https://plot.ly/python.

METTRE À JOUR:

J'ai essayé d'exécuter les exemples pandas comme décrit ici .

J'obtiens des erreurs d'informations d'identification pour toutes les commandes df.iplot() ou Series.iplot().

Quelqu'un peut-il bien vouloir expliquer pourquoi j'obtiens des erreurs d'identification malgré l'utilisation d'iplot ().

Il n'y a pas non plus de documentation utile concernant cufflinks.

La documentation plot.ly Est l'une des pires que j'ai vues. L'organisation est un gâchis et pas très amicale.

9
codingknob

À partir de docs , vous devez lancer le carnet Plotly avec init_notebook_mode, notez également que lorsque vous appelez py.iplot il appelle toujours la fonction plot depuis le module plotly en ligne, vous devez importer le iplot (pas le plot) depuis plotly.offline et l'utiliser pour le tracé hors ligne et le rendu à l'intérieur du bloc-notes. Vous n'avez pas besoin des informations d'identification pour le tracé hors ligne:

from plotly.offline import init_notebook_mode, iplot
from plotly.graph_objs import *

init_notebook_mode(connected=True)         # initiate notebook for offline plot

trace0 = Scatter(
  x=[1, 2, 3, 4],
  y=[10, 15, 13, 17]
)
trace1 = Scatter(
  x=[1, 2, 3, 4],
  y=[16, 5, 11, 9]
)
data = Data([trace0, trace1])

iplot(data)               # use plotly.offline.iplot for offline plot

enter image description here

20
Psidom

Voici ce qui a fonctionné pour moi. J'utilise Anaconda, l'intrigue n'est pas intégrée à Jupyter mais générée à l'extérieur, quoi qu'il en soit.

import plotly.offline as py
import pandas as pd
import plotly.graph_objs as go

xl = pd.ExcelFile('c:\\Users\\xxx\Downloads\\krko.xlsx')
df = xl.parse("All_Kr") 
krw=df.get_values()[:,12] # Column 13
kro=df.get_values()[:,11] # Column 12
Sw=df.get_values()[:,5]   # Column 6

Sw_vs_krw=go.Scatter(x=Sw,y=krw,name='krw')
Sw_vs_kro=go.Scatter(x=Sw,y=kro,name='kro')
data = [Sw_vs_krw, Sw_vs_kro]
py.plot(data,layout,filename='C:\\Users\\earro\\basic-line-plot.html')

Résultats complotés

2