Python 在网站中嵌入简单的交互式数据可视化(Bokeh?其他平台?)

Python 在网站中嵌入简单的交互式数据可视化(Bokeh?其他平台?),python,web,visualization,data-visualization,bokeh,Python,Web,Visualization,Data Visualization,Bokeh,我以前使用Python构建过很多数据可视化工具,依靠基于桌面的GUI工具进行用户交互(例如Qt),但现在我正在尝试以网站的形式使一些东西更易于访问 恐怕我的网络开发经验有限,想知道有没有人能推荐这个项目的平台/技术? 我的目标是一个带有下拉菜单的简单网站。当用户从下拉列表中进行选择时,相关数据将从web服务器上的.txt文件加载,并在网站中打印。有权使用缩放工具和光标指示鼠标位置的数据是很有价值的 在将来,我想扩展它以添加更复杂的功能(例如,用户输入框,根据输入执行绘图代码),但就目前而言,实现

我以前使用Python构建过很多数据可视化工具,依靠基于桌面的GUI工具进行用户交互(例如Qt),但现在我正在尝试以网站的形式使一些东西更易于访问

恐怕我的网络开发经验有限,想知道有没有人能推荐这个项目的平台/技术? 我的目标是一个带有下拉菜单的简单网站。当用户从下拉列表中进行选择时,相关数据将从web服务器上的.txt文件加载,并在网站中打印。有权使用缩放工具和光标指示鼠标位置的数据是很有价值的

在将来,我想扩展它以添加更复杂的功能(例如,用户输入框,根据输入执行绘图代码),但就目前而言,实现上述简单情况将是非常好的

我发现了关于Bokeh online的正面评论,它看起来不错,似乎支持Python代码。然而,虽然示例向我展示了如何绘制单个案例,但我无法确定如何在网站中创建一个下拉菜单来动态更新绘制的数据

我的目标是代码要快速,并有可能被众多web用户访问。如果有比Bokeh更好的选择,我愿意接受任何建议或想法


非常感谢

这里有很多可用的工具。你可以考虑如下:


需要零编码:

面向开发人员:JavaScript库

如果你喜欢Python,请考虑:

对于R:

据我所知,这正是bokeh的用途:在web浏览器中可视化数据并具有轻松的用户交互

这是一个小示例,向您展示了使用bokeh可以实现的简单程度:

假设您有两个包含数据的csv文件:

# a.csv :
Time;myData
1;-2,926
2;-2,892
3;-2,89
...

#b.csv : 
Datation;myData
0,000000;18,432;
10,000000;17,785;
20,000000;17,242;
...
使用一个名为“my_script”的python脚本:

from bokeh.layouts import row
from bokeh.plotting import figure
from bokeh.models.widgets import Dropdown
from bokeh.models import ColumnDataSource
from bokeh.io import curdoc
import pandas as pd

# callback to load file
def load_file(attr, old, new):
    file = dropdown.value
    print(file)
    df = pd.read_csv(file, sep = ';', header = 0, index_col = 0, decimal = ",")
    print(df)
    source.data = dict(x=df.index.values, y=df['myData'].values)


# configuring dropdow widget
choices = [ ("a.csv", "C:/Test/a.csv"), ("b.csv", "C:/Test/b.csv")]
dropdown = Dropdown(label="Add condition", menu=choices)
dropdown.on_change('value', load_file)

# configuring plot
plot = figure(tools="box_zoom, hover, reset")
source = ColumnDataSource(dict(x = [], y=[]))
plot.scatter(x="x", y="y", source=source)

# add widget to bokeh root document
curdoc().add_root(row(dropdown, plot))
现在您必须启动bokeh服务器,例如使用命令

bokeh server --show my_script.py
--将web浏览器直接显示到url

您还可以在html代码中嵌入bokeh html代码。但是,要使用此方法加载文件,仍然需要运行bokeh服务器。例如,您可以直接从web浏览器上载数据,但这是另一回事


请不要以为我选择用熊猫加载数据,但还有其他方法。当然,您还需要修改代码,以加载带有pd.read_csv()中参数的数据。

谢谢,这看起来很棒!我现在就试试,然后接受它。一般来说,在我的web主机上运行Bokeh服务器是否适合通过web进行大规模访问?或者简单的javascript(/其他什么?)更好吗?我不是专家,但根据,或者,我认为bokeh适用于“大规模”。可能还有其他解决方案,但我不知道。我发现bokeh的唯一限制是使用非常大的数据集(>300k)时用户体验缓慢/滞后。但是有