In my usual workflow with Plotly and Jupyter Notebook, I create a basic chart using cufflinks like this:
import pandas as pd
import cufflinks as cf
from plotly.offline import init_notebook_mode, iplot
cf.go_offline(connected=True)
init_notebook_mode(connected=True)
df = pd.DataFrame({"y": [1, 5, 6, 7, 9]})
fig = df.iplot(asFigure=True)
Hereby, I set the asFigure-argument to True so that the iplot-function returns a Plotly figure object. With that I can then very easily customize the chart, for example by saying:
fig.layout.paper_bgcolor = "white"
fig.layout.plot_bgcolor = "white"
My problem now is that the multi level tab completion doesn’t work anymore (since I reinstalled Anaconda Distribution and created new environments).
For example, let’s say I know I want to change something about the ticks of the y-axis. What I used to do then was, to type “fig.layout.yaxis.tick” and then I hit tab to see all the properties that are related to ticks. I know I can also just type “fig.layout.yaxis” and then hit shift+tab to see all the properties, but then I still have to type everything out. So, the multi level tab completion is simply way more convenient.
By the way, the regular “one level” tab completion works. So, I can type “fig.” and then hit tab to see the properties of fig.
I know the problem is not really caused by Plotly but by (I guess) the Jupyter Notebook, but maybe someone can give me a hint why the multi level tab completion doesn’t work anymore. The yml-file for the environment where it used to work looks like this:
name: ohnecf
channels:
- defaults
dependencies:
- _license=1.1=py36_1
- alabaster=0.7.10=py36_0
- anaconda=4.4.0=np112py36_0
- anaconda-client=1.6.3=py36_0
- anaconda-navigator=1.6.2=py36_0
- anaconda-project=0.6.0=py36_0
- asn1crypto=0.22.0=py36_0
- astroid=1.4.9=py36_0
- astropy=1.3.2=np112py36_0
- babel=2.4.0=py36_0
- backports=1.0=py36_0
- beautifulsoup4=4.6.0=py36_0
- bitarray=0.8.1=py36_1
- blas=1.0=mkl
- blaze=0.10.1=py36_0
- bleach=1.5.0=py36_0
- bokeh=0.12.5=py36_1
- boto=2.46.1=py36_0
- bottleneck=1.2.1=np112py36_0
- bzip2=1.0.6=vc14_3
- cffi=1.10.0=py36_0
- chardet=3.0.3=py36_0
- click=6.7=py36_0
- cloudpickle=0.2.2=py36_0
- clyent=1.2.2=py36_0
- colorama=0.3.9=py36_0
- comtypes=1.1.2=py36_0
- console_shortcut=0.1.1=py36_1
- contextlib2=0.5.5=py36_0
- cryptography=1.8.1=py36_0
- curl=7.52.1=vc14_0
- cycler=0.10.0=py36_0
- cython=0.25.2=py36_0
- cytoolz=0.8.2=py36_0
- dask=0.14.3=py36_1
- datashape=0.5.4=py36_0
- decorator=4.0.11=py36_0
- distributed=1.16.3=py36_0
- docutils=0.13.1=py36_0
- entrypoints=0.2.2=py36_1
- et_xmlfile=1.0.1=py36_0
- fastcache=1.0.2=py36_1
- flask=0.12.2=py36_0
- flask-cors=3.0.2=py36_0
- freetype=2.5.5=vc14_2
- get_terminal_size=1.0.0=py36_0
- gevent=1.2.1=py36_0
- greenlet=0.4.12=py36_0
- h5py=2.7.0=np112py36_0
- hdf5=1.8.15.1=vc14_4
- heapdict=1.0.0=py36_1
- html5lib=0.999=py36_0
- icu=57.1=vc14_0
- idna=2.5=py36_0
- imagesize=0.7.1=py36_0
- ipykernel=4.6.1=py36_0
- ipython=5.3.0=py36_0
- ipython_genutils=0.2.0=py36_0
- ipywidgets=6.0.0=py36_0
- isort=4.2.5=py36_0
- itsdangerous=0.24=py36_0
- jdcal=1.3=py36_0
- jedi=0.10.2=py36_2
- jinja2=2.9.6=py36_0
- jpeg=9b=vc14_0
- jsonschema=2.6.0=py36_0
- jupyter=1.0.0=py36_3
- jupyter_client=5.0.1=py36_0
- jupyter_console=5.1.0=py36_0
- jupyter_core=4.3.0=py36_0
- jupyterlab=0.35.3=py36_0
- jupyterlab_server=0.2.0=py36_0
- lazy-object-proxy=1.2.2=py36_0
- libpng=1.6.27=vc14_0
- libtiff=4.0.6=vc14_3
- llvmlite=0.18.0=py36_0
- locket=0.2.0=py36_1
- lxml=3.7.3=py36_0
- markupsafe=0.23=py36_2
- matplotlib=2.0.2=np112py36_0
- menuinst=1.4.7=py36_0
- mistune=0.7.4=py36_0
- mkl=2017.0.1=0
- mkl-service=1.1.2=py36_3
- mpmath=0.19=py36_1
- msgpack-python=0.4.8=py36_0
- multipledispatch=0.4.9=py36_0
- navigator-updater=0.1.0=py36_0
- nbconvert=5.1.1=py36_0
- nbformat=4.3.0=py36_0
- networkx=1.11=py36_0
- nltk=3.2.3=py36_0
- nose=1.3.7=py36_1
- notebook=5.0.0=py36_0
- numba=0.33.0=np112py36_0
- numexpr=2.6.2=np112py36_0
- numpy=1.12.1=py36_0
- numpydoc=0.6.0=py36_0
- odo=0.5.0=py36_1
- olefile=0.44=py36_0
- openpyxl=2.4.7=py36_0
- openssl=1.0.2l=vc14_0
- packaging=16.8=py36_0
- pandas=0.20.1=np112py36_0
- pandocfilters=1.4.1=py36_0
- partd=0.3.8=py36_0
- path.py=10.3.1=py36_0
- pathlib2=2.2.1=py36_0
- patsy=0.4.1=py36_0
- pep8=1.7.0=py36_0
- pickleshare=0.7.4=py36_0
- pillow=4.1.1=py36_0
- pip=9.0.1=py36_1
- ply=3.10=py36_0
- prompt_toolkit=1.0.14=py36_0
- psutil=5.2.2=py36_0
- py=1.4.33=py36_0
- pycosat=0.6.2=py36_0
- pycparser=2.17=py36_0
- pycrypto=2.6.1=py36_6
- pycurl=7.43.0=py36_2
- pyflakes=1.5.0=py36_0
- pygments=2.2.0=py36_0
- pylint=1.6.4=py36_1
- pyodbc=4.0.16=py36_0
- pyopenssl=17.0.0=py36_0
- pyparsing=2.1.4=py36_0
- pyqt=5.6.0=py36_2
- pytables=3.2.2=np112py36_4
- pytest=3.0.7=py36_0
- python=3.6.1=2
- python-dateutil=2.6.0=py36_0
- pytz=2017.2=py36_0
- pywavelets=0.5.2=np112py36_0
- pywin32=220=py36_2
- pyyaml=3.12=py36_0
- pyzmq=16.0.2=py36_0
- qt=5.6.2=vc14_4
- qtawesome=0.4.4=py36_0
- qtconsole=4.3.0=py36_0
- qtpy=1.2.1=py36_0
- requests=2.14.2=py36_0
- rope=0.9.4=py36_1
- ruamel_yaml=0.11.14=py36_1
- scikit-image=0.13.0=np112py36_0
- scikit-learn=0.18.1=np112py36_1
- scipy=0.19.0=np112py36_0
- seaborn=0.7.1=py36_0
- setuptools=27.2.0=py36_1
- simplegeneric=0.8.1=py36_1
- singledispatch=3.4.0.3=py36_0
- sip=4.18=py36_0
- six=1.10.0=py36_0
- snowballstemmer=1.2.1=py36_0
- sortedcollections=0.5.3=py36_0
- sortedcontainers=1.5.7=py36_0
- sphinx=1.5.6=py36_0
- spyder=3.1.4=py36_0
- sqlalchemy=1.1.9=py36_0
- statsmodels=0.8.0=np112py36_0
- sympy=1.0=py36_0
- tblib=1.3.2=py36_0
- testpath=0.3=py36_0
- tk=8.5.18=vc14_0
- toolz=0.8.2=py36_0
- tornado=4.5.1=py36_0
- traitlets=4.3.2=py36_0
- unicodecsv=0.14.1=py36_0
- vc=14=0
- vs2015_runtime=14.0.25123=0
- wcwidth=0.1.7=py36_0
- werkzeug=0.12.2=py36_0
- wheel=0.29.0=py36_0
- widgetsnbextension=2.0.0=py36_0
- win_unicode_console=0.5=py36_0
- wrapt=1.10.10=py36_0
- xlrd=1.0.0=py36_0
- xlsxwriter=0.9.6=py36_0
- xlwings=0.10.4=py36_0
- xlwt=1.2.0=py36_0
- zict=0.1.2=py36_0
- zlib=1.2.8=vc14_3
- pip:
- backports.shutil-get-terminal-size==1.0.0
- colorlover==0.2.1
- cufflinks==0.14.6
- plotly==3.4.2
- retrying==1.3.3
- rope-py3k==0.9.4.post1
- tables==3.2.2
prefix: C:\Users\mg-ar\Anaconda3\envs\ohnecf