gpt4 book ai didi

python - 如何最好地使用 python 创建一个简单的、交互式的、可共享的图?

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:02 25 4
gpt4 key购买 nike

我希望有人能给我指出正确的方向。 python datavis 领域现在已经变得非常庞大,并且有太多的选择,以至于我有点迷失了实现这一目标的最佳方法。

我有一个 xarray 数据集(但它很可能是一个 pandas 数据框或一个 numpy 数组列表)。

我有 3 列,A、B 和 C。它们包含 40 个数据点。

我想绘制 A 与 B + 尺度*C 的散点图,其中尺度由交互式 slider 确定。

这个更高级的版本会有一个下拉列表,您可以在其中选择一组不同的 3 列,但稍后我会担心这一点。

关于所有这一切的警告是,我希望它是在线的和交互式的,供其他人使用。

似乎有很多选择:

  • Jupyter(我不使用笔记本,所以我不太熟悉它们,但是使用 mybinder 我认为这很容易做到)
  • 密谋
  • Bokeh 服务器
  • pyviz.org(这是一个非常有趣的网站,但同样,似乎有这么多关于如何实现这一点的选择)

如有任何想法或建议,我们将不胜感激。

最佳答案

确实有很多选择,我不确定什么是最好的,但我经常使用 Bokeh 并且对此感到高兴。下面的示例可以帮助您入门。要启动它,请在保存脚本的目录中打开一个 cmd,然后运行“bokeh serve script.py --show --allow-websocket-origin=*”。

from bokeh.plotting import figure
from bokeh.io import curdoc
from bokeh.models.widgets import Slider
from bokeh.models import Row,ColumnDataSource

#create the starting data
x=[0,1,2,3,4,5,6,7,8]
y_noise=[1,2,2.5,3,3.5,6,5,7,8]
slope=1 #set the starting value of the slope
intercept=0 #set the line to go through 0, you can change this later
y= [slope*i + intercept for i in x]#create the y data via a list comprehension

# create a plot
fig=figure() #create a figure
source=ColumnDataSource(dict(x=x, y=y)) #the data destined for the figure
fig.circle(x,y_noise)#add some datapoints to the plot
fig.line('x','y',source=source,color='red')#add a line to the figure

#create a slider and update the graph source data when it changes
def updateSlope(attrname, old, new):
print(str(new)+" is the new slider value")
y = [float(new)*i + intercept for i in x]
source.data = dict(x=x, y=y)
slider = Slider(title="slope", value=slope, start=0.0, end=2.0,step=0.1)
slider.on_change('value', updateSlope)

layout=Row(fig,slider)#put figure and slider next to eachother
curdoc().add_root(layout)#serve it via "bokeh serve slider.py --show --allow-websocket-origin=*"

allow-websocket-origin=* 允许其他用户访问服务器并查看图表。 http 将是 http://yourPCservername:5006/ (5006 是默认的 Bokeh 端口)。如果您不想从您的 PC 上提供服务,您可以订阅像 Heroku 这样的云服务:example .

关于python - 如何最好地使用 python 创建一个简单的、交互式的、可共享的图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com