共享教程:在Graphistry中安全协作#

调查最好一起进行。本教程将介绍新的PyGraphistry方法.privacy(),它允许通过API控制新的共享功能。

我们走过:

  • 在组织上传和个人账户之间切换

  • graphistry.privacy(mode='private', ...) 的全局默认设置

  • 通过g.privacy(...)进行每个可视化的组合设置

  • 通过privacy(invited_users=[{...])邀请和通知

设置#

您需要 pygraphistry 0.20.0+ 版本以对应 Graphistry 服务器(2.37.20+)

[1]:
#! pip install --user -q graphistry pandas
[2]:
import graphistry, pandas as pd
graphistry.__version__
[2]:
'0.20.0'
[3]:
# To specify Graphistry account & server, use:
# graphistry.register(api=3, username='...', password='...', protocol='https', server='hub.graphistry.com')
# For more options, see https://github.com/graphistry/pygraphistry#configure

可选:在组织内共享#

登录时,可选参数“org_name”指定要上传到的组织,而不是您的个人账户。

后续部分将进一步展示数据如何在您的组织内共享。

[ ]:
# graphistry.register(api=3, username='...', password='...', protocol='https', server='hub.graphistry.com', org_name="my-org")
[4]:
#demo data
g = graphistry.edges(pd.DataFrame({
    's': ['a', 'b', 'c'],
    'd': ['b', 'c', 'a'],
    'v': [1, 1, 2]
}), 's', 'd')

g = g.settings(url_params={'play': 0})

安全默认值:未列出 & 所有者可编辑#

在创建图表时,Graphistry 会按照以下规则生成一个专用 URL:

  • 查看:未列出 - 只有获得链接的人才能访问

  • 编辑:仅限所有者

该URL是不可猜测的,唯一列出它的网页是创建者的私人画廊:https://hub.graphistry.com/datasets/。这意味着它的私密性取决于所有者与谁共享该URL。

[12]:
public_url = g.plot(render=False)

默认切换到完全私有#

调用 graphistry.privacy() 以默认使用更强的隐私设置。它设置:

  • mode='private' - 仅限所有者和被邀请者查看(不包括其他组织成员)

  • invited_users=[] - 默认没有邀请者

  • notify=False - 在邀请期间不发送电子邮件通知

  • mode_action='20' - 仅在 mode="organization" 时使用,用于组织内共享的操作,“10”(查看)或“20”(编辑)

  • message=''

默认情况下,这意味着需要明确的个人邀请才能查看。会话中的后续图表将默认使用此设置。

你也可以显式地设置或覆盖这些作为可选参数。

[14]:
graphistry.privacy()
# or equivaently, graphistry.privacy(mode='private', invited_users=[], notify=False, mode_action='20', message='')

owner_only_url = g.plot(render=False)

本地覆盖#

我们可以在本地覆盖设置,例如选择重新启用某些可视化的公共共享:

[15]:
public_g = g.privacy(mode='public')

public_url1 = public_g.plot(render=False)

#Ex: Inheriting public_g's mode='public'
public_g2 = public_g.name('viz2')
public_url2 = public_g.plot(render=False)

#Ex: Global default was still via .privacy()
still_private_url = g.plot(render=False)

邀请和通知#

作为设置的一部分,我们可以允许特定个人作为查看者或编辑者,并可以选择向他们发送电子邮件通知

[18]:
VIEW = '10'
EDIT = '20'

shared_g = g.privacy(
    mode='private',
    notify=True,
    invited_users=[{'email': 'partner1@site1.com', 'action': VIEW},
                   {'email': 'partner2@site2.org', 'action': EDIT}],
    message='Check out this graph!')
shared_url = shared_g.plot(render=False)

选项可以全局或局部配置,就像我们对mode所做的那样。例如,我们可能不希望默认发送电子邮件,只在特定的图表上发送:

[19]:
graphistry.privacy(
    mode='private',
    notify=False,
    invited_users=[{'email': 'partner1@site1.com', 'action': VIEW},
                   {'email': 'partner2@site2.org', 'action': EDIT}])


shared_url = g.plot(render=False)
notified_and_shared_url = g.privacy(notify=True).plot(render=False)

即使我们没有明确通知接收者,对象仍将出现在他们的图库中,网址为 https://hub.graphistry.com/datasets/

在组织内共享#

您可以在组织内共享。按照上述方式在组织内注册(register(..., org_name=my_org)),然后将隐私模式设置为“organization”:

[ ]:
# Share to all members within organization as EDIT mode (default)
VIEW = '10'
EDIT = '20'

shared_org_g = g.privacy(
    mode='organization',
    message='Check out this graph! Only for our organization')
shared_url = shared_g.plot(render=False)
[ ]:
# Share to all members within organization as VIEW mode
VIEW = '10'
EDIT = '20'

shared_org_g = g.privacy(
    mode='organization',
    mode_action=VIEW,
    message='Check out this graph! Only for our organization')
shared_url = shared_g.plot(render=False)