Show Sidebar Hide Sidebar

Privacy in Python

How to set the privacy settings of plotly graphs in python. Three examples of different privacy options: public, private and secret.

New to Plotly?

Plotly's Python library is free and open source! Get started by downloading the client and reading the primer.
You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!

Public Graphs

In [2]:
import plotly.plotly as py
from plotly.graph_objs import *

data = Data([
    Scatter(
        x=[1, 2, 3],
        y=[1, 3, 1]
    )
])
py.iplot(data, filename='privacy-public', sharing='public')
Out[2]:

Below is the URL of this public plot. Anyone can view public plots even if they are not logged into Plotly. Go ahead and try it out:

In [3]:
py.plot(data, filename='privacy-public', sharing='public')
Out[3]:
u'https://plot.ly/~chelsea_lyn/11804'

Private Graphs

In [4]:
py.iplot(data, filename='privacy-private', sharing='private')
Out[4]:

Below is the URL of the private plot above. Only the owner can view the private plot. You won't be able to view this plot, try it out:

In [5]:
py.plot(data, filename='privacy-private', sharing='private')
Out[5]:
u'https://plot.ly/~chelsea_lyn/11806'

Secret Graphs

In [6]:
py.iplot(data, filename='privacy-secret', sharing='secret')
Out[6]:

Below is the URL of this secret plot. Anyone with the secret link can view this chart. However, it will not appear in the Plotly feed, your profile, or search engines. Go ahead and try it out:

In [7]:
py.plot(data, filename='privacy-secret', sharing='secret')
Out[7]:
u'https://plot.ly/~chelsea_lyn/11808?share_key=BhUjltcrv52kYxiz8zKgT7'

Make All Future Plots Private

To make all future plots private, you can update your configuration file to create private plots by default:

In [8]:
import plotly 
plotly.tools.set_config_file(world_readable=False, sharing='private')

Make All Existing Plots Private

This example uses Plotly's REST API

In [9]:
import json
import requests
from requests.auth import HTTPBasicAuth

Define variables, including YOUR USERNAME and API KEY

In [10]:
username = 'private_plotly' # Replace with YOUR USERNAME
api_key = 'k0yy0ztssk' # Replace with YOUR API KEY

auth = HTTPBasicAuth(username, api_key)
headers = {'Plotly-Client-Platform': 'python'}

page_size = 500

Collect filenames of ALL of your plots and
update world_readable of each plot with a PATCH request

In [11]:
def get_pages(username, page_size):
    url = 'https://api.plot.ly/v2/folders/all?user='+username+'&filetype=plot&page_size='+str(page_size)
    response = requests.get(url, auth=auth, headers=headers)
    if response.status_code != 200:
        return
    page = json.loads(response.content)
    yield page
    while True:
        resource = page['children']['next'] 
        if not resource:
            break
        response = requests.get(resource, auth=auth, headers=headers)
        if response.status_code != 200:
            break
        page = json.loads(response.content)
        yield page
        
def make_all_plots_private(username, page_size=500):
    for page in get_pages(username, page_size):
        for x in range(0, len(page['children']['results'])):
            fid = page['children']['results'][x]['fid']
            requests.patch('https://api.plot.ly/v2/files/'+fid, {"world_readable": False}, auth=auth, headers=headers)
    print('ALL of your plots are now private - visit: https://plot.ly/organize/home to view your private plots!') 
    
make_all_plots_private(username)
ALL of your plots are now private - visit: https://plot.ly/organize/home to view your private plots!

Reference

In [12]:
help(py.plot)
Help on function plot in module plotly.plotly.plotly:

plot(figure_or_data, validate=True, **plot_options)
    Create a unique url for this plot in Plotly and optionally open url.
    
    plot_options keyword agruments:
    filename (string) -- the name that will be associated with this figure
    fileopt ('new' | 'overwrite' | 'extend' | 'append') -- 'new' creates a
        'new': create a new, unique url for this plot
        'overwrite': overwrite the file associated with `filename` with this
        'extend': add additional numbers (data) to existing traces
        'append': add additional traces to existing data lists
    auto_open (default=True) -- Toggle browser options
        True: open this plot in a new browser tab
        False: do not open plot in the browser, but do return the unique url
    sharing ('public' | 'private' | 'secret') -- Toggle who can view this
                                                  graph
        - 'public': Anyone can view this graph. It will appear in your profile
                    and can appear in search engines. You do not need to be
                    logged in to Plotly to view this chart.
        - 'private': Only you can view this plot. It will not appear in the
                     Plotly feed, your profile, or search engines. You must be
                     logged in to Plotly to view this graph. You can privately
                     share this graph with other Plotly users in your online
                     Plotly account and they will need to be logged in to
                     view this plot.
        - 'secret': Anyone with this secret link can view this chart. It will
                    not appear in the Plotly feed, your profile, or search
                    engines. If it is embedded inside a webpage or an IPython
                    notebook, anybody who is viewing that page will be able to
                    view the graph. You do not need to be logged in to view
                    this plot.
    world_readable (default=True) -- Deprecated: use "sharing".
                                     Make this figure private/public

Still need help?
Contact Us

For guaranteed 24 hour response turnarounds, upgrade to a Developer Support Plan.