0

TL/DR:我正在尝试做的事情:

  1. 使用数据框(df 中现有的大型数据集)
  2. 作为独立脚本运行(无 jupyter)
  3. 能够轻松地交互/探索数据
  4. 简单但完整的示例(看到许多最终无法正常工作的代码片段)

过去,我在 dataframe、matplotlib 和 tkinter 方面做得很好,但我的数据集大小开始遇到性能壁垒。最近似乎所有的焦点都集中在数据分析和库上,我认为我可以让事情看起来更现代,并用更少的代码提高交互性。部分问题似乎是做事的方式太多,不清楚当前/最佳实践是什么,甚至不清楚如何做这一切。

我以为我非常接近 Bokeh 示例,但后来我发现“Scatter”不再是 bokeh.plotting 或 bokeh.charts 模块的一部分,并且被分解为 bkcharts 项目。不,它被移到了全息视图中,或者它是全息图还是 hvplot... 让我们深入挖掘,好吧,它似乎被移到了 PyViz 中,但使用了带有散景后端的 hvplot。我对所有我头晕目眩的库和工具感到非常困惑。

如果有人可以向我展示一个具有上述要求的简单(但完整)示例,我将不胜感激?

这是使用 matplotlib 和数据帧的OLD非常简化的示例(为简单起见,删除了 tkinter 交互内容):

import matplotlib.pyplot as plt
from io import StringIO
import pandas as pd

data_ssv = """tone_amp_0  tone_freq_0     SNR
75.303        628.0  68.374
84.902       8000.0  61.292
92.856        288.0  70.545
70.000       2093.0  35.036
76.511       6834.0  66.952 """

data = pd.read_table(StringIO(data_ssv), sep="\s+", header=0)

x_points=data.loc[:, ['tone_amp_0']]
y_points=data.loc[:, ['SNR']]
z_points=data.loc[:, ['tone_freq_0']]

fig = plt.figure()
ax = plt.axes()

ax.scatter(x_points, y_points, c=z_points, cmap='hsv');

plt.show()

更新:

这是我迄今为止最接近的一次,但数据没有绘制:

import pandas as pd
from bokeh.plotting import figure
from bokeh.io import output_file,show
from io import StringIO

data_ssv = """tone_amp_0  tone_freq_0     SNR
75.303        628.0  68.374
84.902       8000.0  61.292
92.856        288.0  70.545
70.000       2093.0  35.036
76.511       6834.0  66.952 """

data = pd.read_table(StringIO(data_ssv), sep="\s+", header=0)

p = figure(x_axis_label='tone_amp_0', y_axis_label='SNR')

p.circle(x=data.loc[:, ['tone_amp_0']], y=data.loc[:, ['SNR']])

output_file("basic_interactive_plot.py.html")

show(p)

4

0 回答 0