【问题标题】:Return a value and show plot when running a function运行函数时返回一个值并显示绘图
【发布时间】:2022-10-14 10:34:57
【问题描述】:

因此,在编写函数时,为了分析数据,我喜欢构建显示数据的功能,它可以帮助我调试。

在带有 jupyter notebook 的 matplotlib 中,我可以使用以下代码来显示绘图并返回一个值:

import matplotlib.pyplot as plt
def testwithmatplotlib(num, plotdata = True):
    x = np.arange(num)
    y = x * x
    if plotdata:
        plt.scatter(x, y)
        plt.show()
    return(y)
resmat = testwithmatplotlib(8)   

在 holoviews 中,我使用 jupyter notebook 使用 IPython 显示模块,如下所示。 我不确定这是否是好方法,请建议是否有更好的方法来做到这一点。

import holoviews as hv
def testwithholoviews(num, plotdata = True):
    x = np.arange(num)
    y = x * x
    if plotdata:
        aplot = hv.Scatter((x, y))
        hv.IPython.display.display_html(aplot)
        plt.show()
    return(y)

 
reshol = testwithholoviews(8)   

【问题讨论】:

    标签: python matplotlib holoviews


    【解决方案1】:

    HoloViews 使用 IPython 丰富的显示机制来绘制单元格的输出。如果您想在单元格返回之前调用该机器,只需调用display

    import holoviews as hv, numpy as np
    from IPython.display import display
    hv.extension("bokeh")
    
    def testwithholoviews(num, plotdata = True):
        x = np.arange(num)
        y = x * x
        if plotdata:
            display(hv.Scatter((x, y)))
        return y
     
    reshol = testwithholoviews(8)  
    

    或者,您可以返回 HoloViews 对象,以便它始终可视化,然后在您想要检查它的情况下从中提取数据:

    import holoviews as hv, numpy as np
    hv.extension("bokeh")
    
    def testwithholoviews(num, plotdata = True):
        x = np.arange(num)
        y = x * x
        return hv.Scatter((x, y))
     
    reshol = testwithholoviews(8)
    reshol
    

    无论哪种方式,结果都相同;仅取决于您是要使用具有视觉表示的对象,还是要将绘图视为副作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      相关资源
      最近更新 更多