Python Google Colab中的交互式matplotlib图形

Python Google Colab中的交互式matplotlib图形,python,matplotlib,google-colaboratory,Python,Matplotlib,Google Colaboratory,通常在jupyter笔记本中,我会使用%matplotlib笔记本magic来显示一个交互式窗口,但这似乎不适用于google colab。是否有解决方案,或者无法在google colab中显示交互式窗口?下面是在Plotly中创建交互式iplot()和在google colab笔记本上创建cufflinks()的示例。使用回答中的功能和建议 关键似乎是在进行打印的单元格中包含configure\u plotly\u browser\u state() 下面的代码应该有效: 导入库 impor

通常在jupyter笔记本中,我会使用
%matplotlib笔记本
magic来显示一个交互式窗口,但这似乎不适用于google colab。是否有解决方案,或者无法在google colab中显示交互式窗口?

下面是在Plotly中创建交互式
iplot()
和在google colab笔记本上创建
cufflinks()
的示例。使用回答中的功能和建议

关键似乎是在进行打印的单元格中包含
configure\u plotly\u browser\u state()

下面的代码应该有效:

导入库

import datetime
from datetime import date
import pandas as pd
import numpy as np
from plotly import __version__
%matplotlib inline

import plotly.offline as pyo
import plotly.graph_objs as go
from plotly.offline import iplot

import cufflinks as cf
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot 


cf.go_offline()
将笔记本设置为false

init_notebook_mode(connected=False)
为Colab创建函数 抄自:

创建交互式iplot

configure_plotly_browser_state()
df.iplot(kind='line',x='month',y=['Year_2018', 'Year_1996'], color=['white', 'gold'], 
theme='solar', mode='markers+lines',title='Annual Rainfall in the city Peachtree City, GA')
plt.show()
输出:


[注意:x、y、标题暂时不显示。]

这似乎是后端问题。在jupyter笔记本中,列出不同类型后端的命令是:

%matplotlib --list
输出:

Available matplotlib backends: ['tk', 'gtk', 'gtk3', 'wx', 'qt4', 'qt5', 'qt', 'osx', 'nbagg', 'notebook', 'agg', 'svg', 'pdf', 'ps', 'inline', 'ipympl', 'widget']
但是,对于我的系统/设置,只有“笔记本”和其他一个可用。在jupyter实验室,对我来说,没有一个后端适用于交互式图形(甚至是他们推荐的“内联”图形)


希望它能减少我所经历的搜索和安装/重新安装的时间:)

除了@Nilesh Ingle极好的答案之外,为了解决轴和标题不显示的问题: 您应该更改链接
https://cdn.plot.ly/plotly-1.5.1.min.js?noext
(指plotly的旧版本,因此不显示轴标签)by
https://cdn.plot.ly/plotly-1.5.1.min.js?noext
在函数
配置\u plotly\u browser\u state()中调用脚本时。

希望这会有帮助

对尼莱什·英格尔精彩回答的一点小小修正

要消除轴和标题不显示的问题,您可以将链接(此链接是罪魁祸首)更改为 在函数中,配置\绘图\浏览器\状态()。祝你今天愉快

面对同样的问题(经过大量阅读),我无法让
%matplotlib ipympl/widget
magic与Colab一起工作。然而,正如@Nilesh Ingle在其详细回复中所概述的,下一个最佳解决方案确实是有计划地使用

但是,有一种更简单的方法可以在Colab中进行精心设置和运行

请看下面的示例

还复制了下面的Python代码以供快速参考:

!pip install plotly

import plotly.express as px

SHEET_ID = '153pKW5IZRHwx9mLu_uU-hDSK0D3R19vR71EcgMYHn3I'

df = pd.read_csv('https://docs.google.com/spreadsheets/d/' + SHEET_ID + '/export?format=csv')

fig = px.scatter(data_frame=df, x="x", y="y", width=1000, height=800)
fig.show()

我找到了这个。如果查看本期的最后一条评论,您将看到只有支持的matplotlib后端是
inline
。原因是x-转发的要求。这是有道理的,谢谢链接。我一直在使用mybinder.org而不是google colab进行大多数需要绘图的用途。你知道为什么没有显示正确的标题,而是说“[Object Object]”吗?为了方便起见,我很沮丧不得不使用plotly而不是matplotlib,但这或多或少实现了所需的功能,所以我会接受
matplotlib
也可用于Jupyter笔记本电脑,但它不是交互式的,而
plotly
是交互式的。为什么这是一种解决方案?1.5.1中有bug吗?也许更好的建议是找出修复此错误的特定版本?@Glitcher依赖特定版本是个好主意吗?难道用户不需要使用最新的绘图摘要来决定一个合适的版本,从而在这个过程中使事情变得更容易吗?我很想听听你对此的想法。虽然我不知道运行此程序的环境,但在许多地方,只有在需要更新程序附带的新功能或修复程序时,才应该更新程序库。这是因为更新库存在固有的风险;它可能会引入错误,或破坏可能无法解释的更改。
Available matplotlib backends: ['tk', 'gtk', 'gtk3', 'wx', 'qt4', 'qt5', 'qt', 'osx', 'nbagg', 'notebook', 'agg', 'svg', 'pdf', 'ps', 'inline', 'ipympl', 'widget']
!pip install plotly

import plotly.express as px

SHEET_ID = '153pKW5IZRHwx9mLu_uU-hDSK0D3R19vR71EcgMYHn3I'

df = pd.read_csv('https://docs.google.com/spreadsheets/d/' + SHEET_ID + '/export?format=csv')

fig = px.scatter(data_frame=df, x="x", y="y", width=1000, height=800)
fig.show()