【问题标题】:Seaborn heatmap to plotly failedSeaborn 热图阴谋失败
【发布时间】:2018-02-07 17:42:41
【问题描述】:

将 seaborn.heatmap 图形转换为 plotly 时,我遇到了 plotly 错误。我正在使用以下代码在 jupyter 笔记本中执行此操作:

%matplotlib inline
import numpy as np

import seaborn as sns
import matplotlib.pyplot as plt
from plotly.offline import init_notebook_mode, iplot_mpl

init_notebook_mode(connected=True)

np.random.seed(2017)
data = np.random.randn(10, 20)

当我将其绘制为静态 seaborn 热图时,一切都很好:

sns.heatmap(data)

但是当我尝试将该对象转换为 plotly 时,我遇到了一个错误:

sns.heatmap(data)
fig = plt.gcf()
iplot_mpl(fig)

错误回溯:

/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/site-packages/plotly/matplotlylib/renderer.py:445: UserWarning:

Dang! That path collection is out of this world. I totally don't know what to do with it yet! Plotly can only import path collections linked to 'data' coordinates

---------------------------------------------------------------------------
PlotlyEmptyDataError                      Traceback (most recent call last)
<ipython-input-3-2a07e9adfc34> in <module>()
      1 sns.heatmap(data)
      2 fig = plt.gcf()
----> 3 iplot_mpl(fig)

/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/site-packages/plotly/offline/offline.py in iplot_mpl(mpl_fig, resize, strip_style, verbose, show_link, link_text, validate, image, image_filename, image_height, image_width)
    681     return iplot(plotly_plot, show_link, link_text, validate,
    682                  image=image, filename=image_filename,
--> 683                  image_height=image_height, image_width=image_width)
    684 
    685 

/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/site-packages/plotly/offline/offline.py in iplot(figure_or_data, show_link, link_text, validate, image, filename, image_width, image_height, config)
    330     config.setdefault('linkText', link_text)
    331 
--> 332     figure = tools.return_figure_from_figure_or_data(figure_or_data, validate)
    333 
    334     # Though it can add quite a bit to the display-bundle size, we include

/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/site-packages/plotly/tools.py in return_figure_from_figure_or_data(figure_or_data, validate_figure)
   1396         if not figure['data']:
   1397             raise exceptions.PlotlyEmptyDataError(
-> 1398                 "Empty data list found. Make sure that you populated the "
   1399                 "list of data objects you're sending and try again.\n"
   1400                 "Questions? Visit support.plot.ly"

PlotlyEmptyDataError: Empty data list found. Make sure that you populated the list of data objects you're sending and try again.
Questions? Visit support.plot.ly

【问题讨论】:

    标签: python matplotlib plot plotly seaborn


    【解决方案1】:

    根据这个example,您需要先将matplotlib 图形转换为Plotly 对象,然后手动添加data。这是否比从一开始就使用Plotly 做所有事情更方便是另一个问题。

    %matplotlib inline
    
    import plotly
    import matplotlib as plt
    import numpy as np
    import seaborn as sns
    
    plotly.offline.init_notebook_mode()
    
    np.random.seed(2017)
    
    data = np.random.randn(10, 20)
    sns.heatmap(data)
    
    mpl_fig = plt.pyplot.gcf()
    plotly_fig = plotly.tools.mpl_to_plotly(mpl_fig)
    plotly_fig['data'] = [dict(z=data, type="heatmap")]
    plotly.offline.iplot(plotly_fig)
    

    【讨论】:

    • 感谢您的回答。我看到了那个例子,但它对我不起作用。我试过你的,它给出了一个错误:/opt/cloudera/parcels/Anaconda/envs/py35/lib/python3.5/site-packages/plotly/matplotlylib/renderer.py:445: UserWarning: Dang! That path collection is out of this world. I totally don't know what to do with it yet! Plotly can only import path collections linked to 'data' coordinates 什么都没有显示..
    • 我收到相同的错误/警告,但可以继续工作。我没有尝试使用 Anaconda,而是使用香草 Python/Jupyter。
    • 但是,它与 plot 一起工作正常。您知道从 matplotlib/seaborn 图中导出的刻度、轴命名吗?我有一个大热图,左列有很多字符串。
    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 2020-08-04
    • 2021-03-18
    • 1970-01-01
    • 2021-04-14
    • 2018-05-15
    • 2015-09-12
    • 2020-07-06
    相关资源
    最近更新 更多