如何在自由/开源模式下使用plot.ly

时间:2018-11-23 01:44:53

标签: python plotly

从plot.ly网站上获取histogram https://plot.ly/python/histograms/ 我们有以下代码段:

import plotly.plotly as py
import plotly.graph_objs as go

import numpy as np
x = np.random.randn(500)
data = [go.Histogram(x=x)]
py.iplot(data, filename='basic histogram')

但是运行此命令使我们抱怨它未在其托管服务上运行:

Aw, snap! We didn't get a username with your request.

Don't have an account? https://plot.ly/api_signup

Questions? accounts@plot.ly
---------------------------------------------------------------------------
PlotlyError                               Traceback (most recent call last)
<ipython-input-33-bf076fa5dd12> in <module>
      7 data = [go.Histogram(x=x)]
      8
----> 9 py.iplot(data, filename='basic histogram')

~/Library/Python/3.6/lib/python/site-packages/plotly/plotly/plotly.py in iplot(figure_or_data, **plot_options)
    162         embed_options['height'] = str(embed_options['height']) + 'px'
    163
--> 164     return tools.embed(url, **embed_options)
    165
    166

~/Library/Python/3.6/lib/python/site-packages/plotly/tools.py in embed(file_owner_or_url, file_id, width, height)
    394         else:
    395             url = file_owner_or_url
--> 396         return PlotlyDisplay(url, width, height)
    397     else:
    398         if (get_config_defaults()['plotly_domain']

~/Library/Python/3.6/lib/python/site-packages/plotly/tools.py in __init__(self, url, width, height)
   1438         def __init__(self, url, width, height):
   1439             self.resource = url
-> 1440             self.embed_code = get_embed(url, width=width, height=height)
   1441             super(PlotlyDisplay, self).__init__(data=self.embed_code)
   1442

~/Library/Python/3.6/lib/python/site-packages/plotly/tools.py in get_embed(file_owner_or_url, file_id, width, height)
    299                 "'{1}'."
    300                 "\nRun help on this function for more information."
--> 301                 "".format(url, plotly_rest_url))
    302         urlsplit = six.moves.urllib.parse.urlparse(url)
    303         file_owner = urlsplit.path.split('/')[1].split('~')[1]

PlotlyError: Because you didn't supply a 'file_id' in the call, we're assuming you're trying to snag a figure from a url. You supplied the url, '', we expected it to start with 'https://plot.ly'.
Run help on this function for more information.

In [34]: 2018-11-22 17:40:38.622 Python[26768:4641247] Persistent UI failed to open file file:///Users/sboesch/Library/Saved%20Application%20State/org.python.python.savedState/window_1.data: No such file or directory (2)

那么如何从标准plot.ly的REPL中使用ipython

2 个答案:

答案 0 :(得分:1)

从3开始,您可以仅使用plotly.graph_objsFigureWidget在Jupyter Notebook中工作,如果您需要显式显示绘图,则可以将ipython的display与其他任何小部件一起使用:< / p>

from IPython import display
from plotly import graph_objs as go    
import numpy as np

x = np.random.randn(500)
figure = go.FigureWidget()
figure.add_trace(go.Histogram(x=x))
display.display(figure)

答案 1 :(得分:0)

需要两件事:首先确保拥有plotly 的最新版本:我安装了1.8.3,升级到2.7.0后,情况看起来好多了。

此外:来自@cody的评论-我更仔细地查看了http:// plot.ly/python/offline的offline模式。目前尚不清楚哪种绘制方式:但是我们需要运行以下魔术:

init_notebook_mode(connected=True)

现在,代码段为:

from plotly import __version__
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.plotly as py
import plotly.graph_objs as go
import pandas as pd
import requests
bike = pd.read_json('/shared/bikeRental.json',lines=True)
#bike.createOrReplaceTempView('bike')
#x=sqldf('select Duration from bikePd where Duration < 7200')
x=sqldf('select Duration from bike where Duration < 7200')
init_notebook_mode(connected=True)
hist = [go.Histogram(x=x['Duration'].values)]
plot(hist,filename='/shared/bikeRides')

哪个会产生:

enter image description here