【问题标题】:Use alt.Chart() with data from a google drive url link将 alt.Chart() 与来自 google drive url 链接的数据一起使用
【发布时间】:2019-10-06 07:49:43
【问题描述】:

我在 google colab 中使用 altair 进行绘图。我已经达到了“最大行”警告:https://altair-viz.github.io/user_guide/faq.html#maxrowserror-how-can-i-plot-large-datasets

这是我的数据集的头部:df.head()

所以现在我正在尝试通过 URL 传递数据,喜欢我的 googleDrive: 首先我将文件导出到我的驱动器:

"change directory and export whole csv "
os.chdir(Directory.table_dir)
one.to_json('one.json', orient='records')

然后我尝试使用 URLData 方法:https://altair-viz.github.io/user_guide/generated/core/altair.UrlData.html#altair.UrlData

os.chdir(Directory.table_dir)
#checking if i can read the file to a pandas dataframe
df=pd.read_json('one.json', orient='records')

source=alt.UrlData('content/gdrive/My Drive/SCTFT/Tables/one.json')


chart = alt.Chart(source).mark_point().encode(
    x='VG:Q',
    y='absID:Q',
    color='file:N',
)
chart

我也试过了:

source='content/gdrive/My Drive/SCTFT/Tables/one.json'

使用 df 从 matplotlib 绘图有效。

但是从 altair 我得到: altair plot

我没有收到任何错误消息。 我应该改变我导出文件的方式吗?或者我如何将它与 URL 链接?

使用新信息进行编辑

我从https://colab.research.google.com/github/altair-viz/altair_data_server/blob/master/AltairDataServer.ipynb 运行代码 :pip install first graph

它一直有效,直到:

Altair data server

这只是我在没有做任何更改的情况下运行笔记本,所以我的 colab 的设置方式一定有问题?

【问题讨论】:

    标签: python json google-colaboratory altair


    【解决方案1】:

    您传递给图表的 URL 数据必须通过 HTTP 请求对前端可见,并且content/gdrive/My Drive/SCTFT/Tables/one.json 看起来不像是一个有效的 URL。

    由于您的数据在 Google 驱动器上并且无法通过 HTTP URL 获得,我建议disabling the maximum rows check 并将数据框直接传递给图表:

    alt.data_transformers.enable(max_rows=None)
    
    alt.Chart(df).mark_point().encode(
        x='VG:Q',
        y='absID:Q',
        color='file:N',
    )
    

    【讨论】:

    • 好的,但我将在我的笔记本中放入 6-7 个交互式图表,例如多面板散点图,每个图表处理大约 11.000 行数据。所以我担心性能受到影响。会好起来吗,或者有没有可以链接的方式上传我的数据的地方?
    • 如果担心在 notebook 中嵌入数据,可以使用altair data server 方法。
    • 我试过了,也许我没有正确传递数据。我做了: !pip install altair_data_server 然后运行: alt.data_transformers.enable('data_server') ---- df=pd.read_json('one.json', orient='records') ---- chart = alt .Chart(df).mark_point().encode( x='VG:Q', y='absID:Q', )---- chart ----- 得到一个空白图
    • 数据服务器在 Colab 中工作 - 空白图表可能是您的数据或代码有问题(如果没有更多信息很难判断)。
    • 我只是按照你给我的链接,直到谷歌 colab:colab.research.google.com/github/altair-viz/altair_data_server/…,然后用 ctrl-f9 运行它,图表也是空白的。我将在我的问题中添加详细信息,以便更容易看到
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2014-09-15
    • 2017-11-26
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多