TL/DR:我正在尝试做的事情:
- 使用数据框(df 中现有的大型数据集)
- 作为独立脚本运行(无 jupyter)
- 能够轻松地交互/探索数据
- 简单但完整的示例(看到许多最终无法正常工作的代码片段)
过去,我在 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)